From 09b1a34601ea6f7fc35844a6626d7ae4e2729cfb Mon Sep 17 00:00:00 2001 From: Dronminator Date: Sun, 26 Mar 2023 00:10:09 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=BC=D0=B0=D1=88=D0=BD=D0=B5?= =?UTF-8?q?=D0=B5=20=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5:=20=D0=9F?= =?UTF-8?q?=D0=B0=D1=80=D1=81=D0=B8=D0=BD=D0=B3=20=D0=A1=D0=B0=D0=B9=D1=82?= =?UTF-8?q?=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Задания/task1/Lahin/postgres.py | 74 +++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 Задания/task1/Lahin/postgres.py diff --git a/Задания/task1/Lahin/postgres.py b/Задания/task1/Lahin/postgres.py new file mode 100644 index 0000000..5713ee5 --- /dev/null +++ b/Задания/task1/Lahin/postgres.py @@ -0,0 +1,74 @@ +import psycopg2 +import wget +from bs4 import BeautifulSoup +from selenium import webdriver +from selenium.webdriver.chrome.service import Service +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") +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})") + 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:] +connection=psycopg2.connect(host='localhost', dbname='dbdata', user='postgres', password='Q1w2e3r4') +cursor = connection.cursor() +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), +Graphics_Controller varchar(40), +Volume varchar(25), +src varchar(100) +); +""" +cursor.execute(insert) +connection.commit() +for i in range(len(products)): + url = "https://"+pictures[i]['src'] + filename = f"C:\DATA\Images\{i+1}.jpg" + wget.download(url, filename) + 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}');""" + cursor.execute(insert) + connection.commit() +cursor.execute("select * from laptops") +print("Результат", cursor.fetchall()) +cursor.close() +connection.close() +''' +url = 'https://mephi.ru/content/public/styles/1015x500/public/images/slider/dod_na_sayt_mifi.jpg?itok=7XJZoP3t' +wget.download(url, 'C:\Games\Img\cat2.jpg') +''' \ No newline at end of file