From 1604cf223285bf37d24c0ded5900fe0ffaeb5c23 Mon Sep 17 00:00:00 2001 From: Dronminator Date: Mon, 27 Mar 2023 13:23:10 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B0=D1=80=D1=81=D0=B8=D0=BD=D0=B3=20?= =?UTF-8?q?=D1=81=20=D1=81=D0=B0=D0=B9=D1=82=D0=B0=20=D0=B8=20=D0=B2=D0=B2?= =?UTF-8?q?=D0=B5=D0=B4=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B2=20=D0=91=D0=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Задания/task1/Lahin/postgres.py | 48 +++++++++++++-------------------- 1 file changed, 19 insertions(+), 29 deletions(-) diff --git a/Задания/task1/Lahin/postgres.py b/Задания/task1/Lahin/postgres.py index 0ca1bb2..cfa0920 100644 --- a/Задания/task1/Lahin/postgres.py +++ b/Задания/task1/Lahin/postgres.py @@ -7,65 +7,55 @@ import time i = 1 s = Service("С:\DATA\ChromeDriver\chromedriver.exe") browser = webdriver.Chrome(service=s) -browser.get("https://www.mvideo.ru/noutbuki-planshety-komputery-8/noutbuki-118?from=under_search") +browser.get("https://www.mvideo.ru/noutbuki-planshety-komputery-8/noutbuki-118/f/tolko-v-nalichii=da?from=under_search") +time.sleep(5) +""" height = browser.execute_script("return document.body.scrollHeight") time.sleep(4) -while 900*i < height: - height = browser.execute_script("return document.body.scrollHeight") - browser.execute_script(f"window.scrollTo(0,{900*i})") +for i in range(10): + browser.execute_script(f"window.scrollTo(0, {1000*i})") time.sleep(1) - i+=1 +""" html_text = browser.page_source soup = BeautifulSoup(html_text, 'lxml') productst = soup.find_all('a', class_="product-title__text") pricest = soup.find_all('span', class_="price__main-value") -features = soup.find_all('ul', class_="product-feature-list product-feature-list--undefined") -pictures = soup.find_all('img', class_="product-picture__img product-picture__img--list") -products, prices, diagonals, resolutions, CPUs, RAMs, Graphics_controllers, Volumes = [],[],[],[],[],[],[],[] -for i in range(len(productst)): - products.append(productst[i].text.strip()) - prices.append(pricest[i].text.replace("\xa0", "").strip()) -for feature in features: - u = feature.text - diagonals.append(u[20:u.find("\"",20)+1]) - resolutions.append(u[u.find("\"",20)+2:u.find(".", 23)+1]) - CPUs.append(u[u.find("Процессор",20)+9:u.find("ГГц",20)+3].replace("\xa0","")) - RAMs.append(" ".join(u[u.find("(RAM)",20)+5:u.find("Графический контроллер")].split())) - Graphics_controllers.append(u[u.find("Графический контроллер")+22:u.rfind("Объем")-2]) - Volumes.append(u[u.rfind("Объем")+6:].replace("\xa0", "").strip()) -for i in range(len(Volumes)): - u = Volumes[i] - if u.rfind("D")!=-1: Volumes[i] = u[:u.rfind("D")+1]+ " " + u[u.rfind("D")+1:] - else: Volumes[i] = u[:u.rfind("С")+1]+ " " + u[u.rfind("С")+1:] +features = soup.find_all('span', class_="product-feature-list__value") +pictures = soup.find_all('div', class_="product-picture-container") connection=psycopg2.connect(host='localhost', dbname='dbdata', user='postgres', password='Q1w2e3r4') cursor = connection.cursor() -insert = """CREATE TABLE public.laptops( +""" insert = CREATE TABLE public.laptops( id serial primary key, product varchar(100), price varchar(15), diagonal varchar(5), resolution varchar(20), CPU varchar(50), -RAM varchar(10), +RAM varchar(15), Graphics_Controller varchar(40), Volume varchar(25), src varchar(100) ); """ +insert = """TRUNCATE TABLE public.laptops; ALTER SEQUENCE laptops_id_seq RESTART WITH 1;""" cursor.execute(insert) connection.commit() -for i in range(len(products)): - url = "https://"+pictures[i]['src'] +for i in range(len(productst)): + url = "https://"+pictures[i].find('img')['src'] filename = f"C:\DATA\Images\{i+1}.jpg" + u = [] + for j in range(10): + u.append(features[10*i+j].text) wget.download(url, filename) + t = pricest[i].text.replace("\xa0", " ") insert = f"""INSERT INTO public.laptops( product, price, diagonal, resolution, CPU, RAM, Graphics_Controller, Volume, src) VALUES - ('{products[i]}', '{prices[i]}', '{diagonals[i]}', '{resolutions[i]}', '{CPUs[i]}', '{RAMs[i]}', '{Graphics_controllers[i]}', '{Volumes[i]}', '{filename}');""" + ('{productst[i].text.strip()}', '{t.strip()}', '{u[0][:u[0].find("/")]}', '{u[0][u[0].find("/")+1:]}', + '{u[2]}', '{u[4]+" "+u[5]}', '{u[6]}', '{u[8]}', '{filename}');""" cursor.execute(insert) connection.commit() cursor.execute("select * from laptops") print("Результат", cursor.fetchall()) cursor.close() connection.close() -