from bs4 import BeautifulSoup # подключение к библиотекам парсинга и работы с базами данных import psycopg2 from wget import download from selenium import webdriver from selenium.webdriver.chrome.service import Service S = Service("D:\Драйвер\chromedriver.exe") browser = webdriver.Chrome(service=S) browser.get('https://ultrasport.ru/catalog/velosipedy/gornye_velosipedy/') # подключение к сайту, с которого будем парсить данные html_text = browser.page_source # сохранение html кода страницы в переменную html_text soup = BeautifulSoup(html_text, 'lxml') # преобразуем код в дерево объектов info = soup.find_all('div', class_="inner_wrap TYPE_1") # поиск всех описывающих товар общих тэгов try: connection = psycopg2.connect( # подключение к базе данных host='localhost', dbname='Bicycles', user='postgres', password='Q1w2e3r4' ) connection.autocommit = True # настройка автоматического комита with connection.cursor() as cursor: # создание таблицы в базе данных cursor.execute( """CREATE TABLE bikes( id serial PRIMARY KEY, bike_name varchar(100) NOT NULL, bike_view varchar(1000) NOT NULL, bike_price varchar(100) NOT NULL, bike_availability varchar(100) NOT NULL); """ ) with connection.cursor() as cursor: # заполнение таблицы данным, которые мы спарсили с сайта for i, item in enumerate(info): name = item.find('a', class_="dark_link js-notice-block__title option-font-bold font_sm").text.strip() price = item.find('div', class_="price only_price font-bold font_mxs").text.strip() enough = item.find('span', class_="value font_sxs").text.strip() p_src = item.find('img', class_="lazy img-responsive").get("src") download(p_src, f"images/{i+1}.jpg") cursor.execute( f"""INSERT INTO public.bikes( bike_name, bike_view, bike_price, bike_availability) VALUES ('{name}','images/{i+1}.jpg','{price}','{enough}');""" ) except Exception as _ex: # обработка ошибок print("[INFO] ERROR", _ex) finally: # завершение подключения if connection: connection.close() print("[INFO] Connection closed")