Merge remote-tracking branch 'origin/master'

This commit is contained in:
Sklvd
2023-04-20 10:00:18 +03:00
66 changed files with 1163 additions and 42 deletions
+1 -1
View File
@@ -4,7 +4,7 @@
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/venv" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="jdk" jdkName="Python 3.9 (venv)" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
+1 -1
View File
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.11" project-jdk-type="Python SDK" />
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9 (venv)" project-jdk-type="Python SDK" />
</project>
File diff suppressed because one or more lines are too long
@@ -0,0 +1,4 @@
<changelist name="Uncommitted_changes_before_Update_at_15_02_2023_1_03_[Changes]" date="1676412217607" recycled="false" toDelete="true">
<option name="PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_15_02_2023_1_03_[Changes]/shelved.patch" />
<option name="DESCRIPTION" value="Uncommitted changes before Update at 15.02.2023 1:03 [Changes]" />
</changelist>
+82 -7
View File
@@ -4,8 +4,12 @@
<option name="autoReloadType" value="SELECTIVE" />
</component>
<component name="ChangeListManager">
<list default="true" id="e5615680-c090-497d-a104-1337ed85f850" name="Changes" comment="parser">
<list default="true" id="e5615680-c090-497d-a104-1337ed85f850" name="Changes" comment="Дз парсинг">
<change afterPath="$PROJECT_DIR$/Задания/task1/Prokhorova/tgbot.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/22712.iml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/22712.iml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/misc.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/misc.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Задания/task1/Prokhorova/dz.py" beforeDir="false" afterPath="$PROJECT_DIR$/Задания/task1/Prokhorova/dz.py" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -20,7 +24,7 @@
</option>
</component>
<component name="Git.Rebase.Settings">
<option name="NEW_BASE" value="master" />
<option name="NEW_BASE" value="origin/master" />
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
@@ -35,12 +39,45 @@
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<<<<<<< HEAD
<component name="PropertiesComponent">{
&quot;keyToString&quot;: {
&quot;last_opened_file_path&quot;: &quot;C:/Users/Honor/c22712&quot;
}
}</component>
<component name="RunManager" selected="Python.zaparsil">
=======
<component name="PropertiesComponent"><![CDATA[{
"keyToString": {
"last_opened_file_path": "C:/Users/71332/PycharmProjects/c22712"
"RunOnceActivity.OpenProjectViewOnStart": "true",
"RunOnceActivity.ShowReadmeOnStart": "true",
"last_opened_file_path": "C:/Users/Honor/Desktop/учеба/прога/c22712",
"settings.editor.selected.configurable": "com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable"
}
}]]></component>
<component name="RunManager" selected="Python.zaparsil">
<component name="RunManager" selected="Python.tgbot">
<configuration name="dz" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
<module name="22712" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="C:\Users\Honor\PycharmProjects\pythonProject\venv\Scripts\python.exe" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/Задания/task1/Prokhorova" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/Задания/task1/Prokhorova/dz.py" />
<option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="false" />
<option name="MODULE_MODE" value="false" />
<option name="REDIRECT_INPUT" value="false" />
<option name="INPUT_FILE" value="" />
<method v="2" />
</configuration>
>>>>>>> d1c29f6 (телеграмм бот)
<configuration name="main" type="PythonConfigurationType" factoryName="Python" nameIsGenerated="true">
<module name="22712" />
<option name="INTERPRETER_OPTIONS" value="" />
@@ -63,6 +100,27 @@
<option name="INPUT_FILE" value="" />
<method v="2" />
</configuration>
<configuration name="tgbot" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
<module name="22712" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="C:\Users\Honor\PycharmProjects\pythonProject\venv\Scripts\python.exe" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/../тг бот" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/../тг бот/tgbot.py" />
<option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="false" />
<option name="MODULE_MODE" value="false" />
<option name="REDIRECT_INPUT" value="false" />
<option name="INPUT_FILE" value="" />
<method v="2" />
</configuration>
<configuration name="zaparsil" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
<module name="22712" />
<option name="INTERPRETER_OPTIONS" value="" />
@@ -86,6 +144,8 @@
</configuration>
<recent_temporary>
<list>
<item itemvalue="Python.tgbot" />
<item itemvalue="Python.dz" />
<item itemvalue="Python.zaparsil" />
</list>
</recent_temporary>
@@ -142,7 +202,21 @@
<option name="project" value="LOCAL" />
<updated>1679839777822</updated>
</task>
<option name="localTasksCounter" value="7" />
<task id="LOCAL-00007" summary="Дз парсинг">
<created>1680206771744</created>
<option name="number" value="00007" />
<option name="presentableId" value="LOCAL-00007" />
<option name="project" value="LOCAL" />
<updated>1680206771744</updated>
</task>
<task id="LOCAL-00008" summary="Дз парсинг">
<created>1680207517708</created>
<option name="number" value="00008" />
<option name="presentableId" value="LOCAL-00008" />
<option name="project" value="LOCAL" />
<updated>1680207517708</updated>
</task>
<option name="localTasksCounter" value="9" />
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
@@ -162,14 +236,15 @@
<component name="VcsManagerConfiguration">
<MESSAGE value="Первый коммит" />
<MESSAGE value="parser" />
<option name="LAST_COMMIT_MESSAGE" value="parser" />
<MESSAGE value="Дз парсинг" />
<option name="LAST_COMMIT_MESSAGE" value="Дз парсинг" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager>
<breakpoints>
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
<url>file://$PROJECT_DIR$/main.py</url>
<line>8</line>
<line>5</line>
<option name="timeStamp" value="1" />
</line-breakpoint>
</breakpoints>
+44
View File
@@ -0,0 +1,44 @@
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from time import sleep
import psycopg2
s = Service("C:\Driver\chromedriver.exe")
browser = webdriver.Chrome(service=s)
browser.get("https://drivenew.ru/layfkhaki/besplatno/top-10-vinodelcheskikh-khozyaystv-krasnodarskogo-kraya/")
sleep(1)
html_text = browser.page_source
soup = BeautifulSoup(html_text, "lxml")
name = soup.find_all("h2")
contacts = soup.find_all("div", class_="article-info")
address = []
number = []
for element in contacts:
a = element.find_all("p")[1]
n = element.find_all("p")[2]
address.append(a)
number.append(n)
pic = soup.find("div", class_="white-bg white-bg-text box-15-new").find_all("img")
picture = []
url = "https://drivenew.ru"
for i in pic:
p = url + i.attrs.get("src")
picture.append(p)
connection = psycopg2.connect(host='localhost', dbname='dbdata', user='postgres', password='Q1w2e3r4t5')
cursor = connection.cursor()
create = """create table Distilleries
(id serial primary key , Name varchar(100), Place varchar(200), Contacts varchar(100), ImageLink varchar(80));"""
cursor.execute(create)
connection.commit()
for j in range(10):
qwery = f"insert into public.distilleries(Name, Place, Contacts, ImageLink) values('{name[j].text.strip()}', '{address[j].text.strip()}', '{number[j].text.strip()}', '{picture[j]}')"
cursor.execute(qwery)
connection.commit()
cursor.execute('select * from Distilleries')
print(cursor.fetchall())
cursor.close()
connection.close()
@@ -0,0 +1 @@
https://github.com/ada-dmitry/PyProg_ada/tree/master/Python/TeleBot
+44
View File
@@ -0,0 +1,44 @@
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from time import sleep
import psycopg2
s = Service("C:\Driver\chromedriver.exe")
browser = webdriver.Chrome(service=s)
browser.get("https://drivenew.ru/layfkhaki/besplatno/top-10-vinodelcheskikh-khozyaystv-krasnodarskogo-kraya/")
sleep(1)
html_text = browser.page_source
soup = BeautifulSoup(html_text, "lxml")
name = soup.find_all("h2")
contacts = soup.find_all("div", class_="article-info")
address = []
number = []
for element in contacts:
a = element.find_all("p")[1]
n = element.find_all("p")[2]
address.append(a)
number.append(n)
pic = soup.find("div", class_="white-bg white-bg-text box-15-new").find_all("img")
picture = []
url = "https://drivenew.ru"
for i in pic:
p = url + i.attrs.get("src")
picture.append(p)
connection = psycopg2.connect(host='localhost', dbname='dbdata', user='postgres', password='Q1w2e3r4t5')
cursor = connection.cursor()
create = """create table Distilleries
(id serial primary key , Name varchar(100), Place varchar(200), Contacts varchar(100), ImageLink varchar(80));"""
cursor.execute(create)
connection.commit()
for j in range(10):
qwery = f"insert into public.distilleries(Name, Place, Contacts, ImageLink) values('{name[j].text.strip()}', '{address[j].text.strip()}', '{number[j].text.strip()}', '{picture[j]}')"
cursor.execute(qwery)
connection.commit()
cursor.execute('select * from Distilleries')
print(cursor.fetchall())
cursor.close()
connection.close()
+37
View File
@@ -0,0 +1,37 @@
import telebot
import psycopg2
from telebot import types
# Создаем экземпляр бота
bot = telebot.TeleBot('5898574743:AAF2y_y3U2IfWwQVJ_lF6mmiDPlx1YgU9-Q')
# Функция, обрабатывающая команду /start
@bot.message_handler(commands=["start"])
def start_messanger(messanger):
connection = psycopg2.connect(host='localhost', dbname='dbdata', user='postgres', password='Q1w2e3r4t5')
cursor = connection.cursor()
cursor.execute("select id, name from Distilleries")
first_step = []
for id, name in cursor.fetchall():
f_s = str(id) + '. ' + name
first_step.append(f_s)
my_str = '\n'.join(first_step)
bot.send_message(messanger.chat.id, 'Я на связи. Выберите интересующую вас Винокурню, введите ее номер\n' + my_str.strip())
cursor.close()
connection.close()
@bot.message_handler(content_types=["text"])
def output(put):
n = put.text.strip()
m = int(n)
connection = psycopg2.connect(host='localhost', dbname='dbdata', user='postgres', password='Q1w2e3r4t5')
cursor = connection.cursor()
cursor.execute(f"select place, contacts, imagelink from Distilleries where id = {m}")
for place, contacts, imagelink in cursor.fetchall():
answer = 'Адрес: ' + place + ' ' + 'Контакты: ' + contacts + ' ' + 'Фото: ' + imagelink
bot.send_message(put.chat.id, answer)
cursor.close()
connection.close()
bot.polling()
+121
View File
@@ -0,0 +1,121 @@
import telebot
import psycopg2
from telebot import types
# Создаем экземпляр бота
bot = telebot.TeleBot('5898574743:AAF2y_y3U2IfWwQVJ_lF6mmiDPlx1YgU9-Q')
# Функция, обрабатывающая команду /start
@bot.message_handler(commands=["start"])
def start_messanger(messanger):
connection = psycopg2.connect(host='localhost', dbname='dbdata', user='postgres', password='Q1w2e3r4t5')
cursor = connection.cursor()
cursor.execute("select id, name from Distilleries")
first_step = []
for id, name in cursor.fetchall():
f_s = str(id) + '. ' + name
first_step.append(f_s)
my_str = '\n'.join(first_step)
bot.send_message(messanger.chat.id, 'Я на связи. Выберите интересующую вас Винокурню, введите ее номер\n' + my_str.strip())
cursor.close()
connection.close()
@bot.message_handler(content_types=["text"])
def output(put):
n = put.text.strip()
m = int(n)
connection = psycopg2.connect(host='localhost', dbname='dbdata', user='postgres', password='Q1w2e3r4t5')
cursor = connection.cursor()
if (m==1):
cursor.execute("select place, contacts, imagelink from Distilleries where id in(1)")
for place, contacts, imagelink in cursor.fetchall():
answer = 'Адрес: ' + place + ' ' + 'Контакты: ' + contacts + ' ' + 'Фото: ' + imagelink
bot.send_message(put.chat.id, answer)
cursor.close()
connection.close()
if (m == 2):
cursor.execute("select place, contacts, imagelink from Distilleries where id in(2)")
for place, contacts, imagelink in cursor.fetchall():
answer = 'Адрес: ' + place + ' ' + 'Контакты: ' + contacts + ' ' + 'Фото: ' + imagelink
bot.send_message(put.chat.id, answer)
cursor.close()
connection.close()
if (m == 3):
cursor.execute("select place, contacts, imagelink from Distilleries where id in(3)")
for place, contacts, imagelink in cursor.fetchall():
answer = 'Адрес: ' + place + ' ' + 'Контакты: ' + contacts + ' ' + 'Фото: ' + imagelink
bot.send_message(put.chat.id, answer)
cursor.close()
connection.close()
if (m == 4):
cursor.execute("select place, contacts, imagelink from Distilleries where id in(4)")
for place, contacts, imagelink in cursor.fetchall():
answer = 'Адрес: ' + place + ' ' + 'Контакты: ' + contacts + ' ' + 'Фото: ' + imagelink
bot.send_message(put.chat.id, answer)
cursor.close()
connection.close()
if (m == 5):
cursor.execute("select place, contacts, imagelink from Distilleries where id in(5)")
for place, contacts, imagelink in cursor.fetchall():
answer = 'Адрес: ' + place + ' ' + 'Контакты: ' + contacts + ' ' + 'Фото: ' + imagelink
bot.send_message(put.chat.id, answer)
cursor.close()
connection.close()
if (m == 6):
cursor.execute("select place, contacts, imagelink from Distilleries where id in(6)")
for place, contacts, imagelink in cursor.fetchall():
answer = 'Адрес: ' + place + ' ' + 'Контакты: ' + contacts + ' ' + 'Фото: ' + imagelink
bot.send_message(put.chat.id, answer)
cursor.close()
connection.close()
if (m == 7):
cursor.execute("select place, contacts, imagelink from Distilleries where id in(7)")
for place, contacts, imagelink in cursor.fetchall():
answer = 'Адрес: ' + place + ' ' + 'Контакты: ' + contacts + ' ' + 'Фото: ' + imagelink
bot.send_message(put.chat.id, answer)
cursor.close()
connection.close()
if (m == 8):
cursor.execute("select place, contacts, imagelink from Distilleries where id in(8)")
for place, contacts, imagelink in cursor.fetchall():
answer = 'Адрес: ' + place + ' ' + 'Контакты: ' + contacts + ' ' + 'Фото: ' + imagelink
bot.send_message(put.chat.id, answer)
cursor.close()
connection.close()
if (m == 9):
cursor.execute("select place, contacts, imagelink from Distilleries where id in(9)")
for place, contacts, imagelink in cursor.fetchall():
answer = 'Адрес: ' + place + ' ' + 'Контакты: ' + contacts + ' ' + 'Фото: ' + imagelink
bot.send_message(put.chat.id, answer)
cursor.close()
connection.close()
if (m == 10):
cursor.execute("select place, contacts, imagelink from Distilleries where id in(10)")
for place, contacts, imagelink in cursor.fetchall():
answer = 'Адрес: ' + place + ' ' + 'Контакты: ' + contacts + ' ' + 'Фото: ' + imagelink
bot.send_message(put.chat.id, answer)
cursor.close()
connection.close()
bot.polling()
-1
View File
@@ -1 +0,0 @@
Hello World!
-9
View File
@@ -1,9 +0,0 @@
# Diana Gasanova
import requests
from bs4 import BeautifulSoup as bs
URL = "https://www.kinopoisk.ru/lists/movies/top-250-2020/"
r = requests.get(URL, timeout=10)
soup = bs(r.text, "html.parser")
films = soup.find_all(attrs={"class": "styles_mainTitle__IFQyZ styles_activeMovieTittle__kJdJj"})
for film in films:
print(film.text)
+29
View File
@@ -0,0 +1,29 @@
# парсер к полусему 8 неделя
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from wget import download
import psycopg2 as psyc
# s = Service("chromedriver") на Ubuntu можно не указывать путь до драйвера :)
URL = "https://proskateshop.ru/skejtbordy/?utm_source=yandex&utm_medium=cpc&utm_campaign=cn%7Cskeyty_gz-1%7Ccid%7C51517250%7Csearch&utm_content=gid%7C4180310153%7Caid%7C8980588780%7C20506942844_20506942844%7Cmain&utm_term=%D0%9F%D0%B5%D0%BD%D0%BD%D0%B8%20%D0%B1%D0%BE%D1%80%D0%B4%20%D0%BA%D1%83%D0%BF%D0%B8%D1%82%D1%8C&etext=2202.N39xvihj0F0Od_d4etv_6nh36sdlRP-T26wHLuCJfjo_JZtVI5O7HY5f8FOJnzuLZXB6eWZoZnp2dG1laHBlcA.aceac50a24e4832d82874cd59ca1f9a315d9b351&_openstat=ZGlyZWN0LnlhbmRleC5ydTs1MTUxNzI1MDs4OTgwNTg4NzgwO3lhbmRleC5ydTpndWFyYW50ZWU&yclid=1445113833197462400"
brow = webdriver.Chrome()
brow.get(URL)
html = brow.page_source
soup = BeautifulSoup(html, "lxml")
penny = soup.find_all(attrs={"class": "product-layout product-grid col-lg-4 col-md-4 col-sm-6 col-xs-6"})
with psyc.connect(dbname="db_for_parse", user="dialuna") as conn:
with conn.cursor() as cursor:
for i, product in enumerate(penny[1:]):
image_link = product.find("img").attrs.get("src")
image_name = product.find("img").attrs.get("alt")
price = product.find("p", attrs={"class": "price"}).text.strip()
cursor.execute(f"""insert into test(link, name, price, file)
values ('{image_link}', '{image_name}', '{price}', 'images/{i}.jpg')""")
conn.commit()
+3
View File
@@ -0,0 +1,3 @@
# Default ignored files
/shelf/
/workspace.xml
+8
View File
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
@@ -0,0 +1,6 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>
+4
View File
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.11" project-jdk-type="Python SDK" />
</project>
+8
View File
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/Gusev.iml" filepath="$PROJECT_DIR$/.idea/Gusev.iml" />
</modules>
</component>
</project>
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/../../.." vcs="Git" />
</component>
</project>
-1
View File
@@ -1 +0,0 @@
print('Hello, World!')
@@ -0,0 +1,56 @@
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")
Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

+61
View File
@@ -0,0 +1,61 @@
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")
@@ -0,0 +1 @@
Проверка работы.
@@ -0,0 +1,54 @@
from bs4 import BeautifulSoup
from selenium.webdriver import Chrome
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
import time
import wget
import psycopg2
import re
s = Service('C:\data\hrome\chromedriver.exe')
browser = webdriver.Chrome(service=s)
browser.get('https://music.yandex.ru/chart')
time.sleep (1)
html_text = browser.page_source
soup = BeautifulSoup(html_text, 'lxml')
Трек=soup.find_all('a', class_='d-track__title deco-link deco-link_stronger')
Длительность=soup.find_all('div', class_='d-track__info d-track__nohover')
Автор=soup.find_all('span', class_='d-track__artists')
Картинки=soup.find_all('img', class_='entity-cover__image deco-pane')
str_Картинки=[]
for i in range(len(Картинки)):
str_Картинки.append(Картинки[i])
str_Картинки=str(str_Картинки)
str_Картинки=re.findall(r'src="(.*?)"',str_Картинки)
for i in range(len(str_Картинки)):
str_Картинки[i]='https:'+str_Картинки[i]
#for i in range(len(str_cartinki)):
#wget.download(str_cartinki[i], 'TOP'+str((i+1))+'.jpeg')
connection = psycopg2.connect(dbname = 'dbdata',
user='postgres', password='Q1w2e3r4',
host='localhost')
cursor=connection.cursor()
creat_table="""CREATE TABLE music
(id serial primary key, "Трек" varchar(100),
"Длительность" varchar(100),
"Автор" varchar(100),
"Картинки" varchar(100))"""
cursor.execute(creat_table)
connection.commit()
for Трек, Длительность, Автор, Картинки in zip(Трек, Автор, Длительность, Картинки):
qwery=f"""INSERT INTO public.music(
Трек, Длительность, Автор, Картинки)
VALUES
('{Трек.text}','{Длительность.text}','{Автор.text}', '{Картинки.text}' )"""
cursor.execute(qwery)
connection.commit()
for i in range(1,len(str_Картинки)+1):
puti = r'C:\Users\kingo\PycharmProjects\pythonProject2\TOP' + str(i) + '.jpeg'
qwery=f"""UPDATE public.music
SET Картинки='{puti}'
WHERE id={i}"""
cursor.execute(qwery)
connection.commit()
@@ -0,0 +1,43 @@
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
import psycopg2
from time import sleep
s = Service("C:\data\chromedriver.exe")
browser = webdriver.Chrome(service=s)
browser.get('https://untappd.com/brewery/top_rated')
sleep(1)
html_text=browser.page_source
soup = BeautifulSoup(html_text, 'lxml')
ratings = soup.find_all('div', class_='beer-item')
item = []
for i in ratings:
c = i.text
c = c.split('\n')
for k in c:
if k == '':
c.pop(c.index(k))
d = i.find('img').get('src')
c.append(d)
item.append(c)
item.pop(3)
item.pop(8)
connection = psycopg2.connect(host='localhost', dbname='breweries', user='postgres', password='Q1w2e3r4t5')
cursor=connection.cursor()
create = """ create table Information
(id int primary key, Name varchar(100), Place varchar(150), Sorts varchar(15), AmountOfRatings varchar(25),
Rating varchar(10), ImageLink varchar(150));"""
cursor.execute(create)
connection.commit()
for i in range(20):
insert_qwery="""INSERT INTO public.Information(id,Name, Place, Sorts, AmountOfRatings, Rating, ImageLink) VALUES
( '"""+str(i+1)+"""', '"""+item[i][0]+"""', '"""+item[i][1]+"""', '"""+item[i][2]+"""', '"""+item[i][3]+"""',
'"""+item[i][9]+"""', '"""+item[i][13]+"""');""";
cursor.execute(insert_qwery)
connection.commit()
cursor.execute('select * from Information')
print(cursor.fetchall())
cursor.close()
connection.close()
+41
View File
@@ -0,0 +1,41 @@
import psycopg2
import wget
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
connection = psycopg2.connect(host='localhost', dbname='dbdata', user='postgres', password='Q1w2e3r4')
cursor = connection.cursor()
creat_qwery = """ create table Parsing
(id serial primary key, product_name varchar(100), description varchar(1000), price varchar(10), priceDis varchar(30), scr varchar(100))"""
cursor.execute(creat_qwery)
connection.commit()
s = Service('E:\\Downloads\\chromedriver_win32.zip\\chromedriver.exe')
browser = webdriver.Chrome(service=s)
browser.get('https://trial-sport.ru/gds.php?s=51516&c1=1070639&c2=1070640')
html_code = browser.page_source
soup = BeautifulSoup(html_code, 'lxml')
product_name=soup.find_all('a', class_='title')
description=soup.find_all('span', class_='description')
price = soup.find_all('span', class_="price")
priceDis = soup.find_all('span', class_="discount")
picture = soup.find_all('div', class_="img")
for i in range(20):
url = 'https://trial-sport.ru/gds.php?s=51516&c1=1070639&c2=1070640'+picture[i].find('a').find('img')['src']
filename = f"E:\Downloads\parcing\img\{i}.jpg"
wget.download(url, filename)
cursor.execute(f"""insert into Parsing (product_name, description, price, priceDis, scr)
VALUES ('{product_name[i].text}','{description[i].text}', '{price[i].text}', '{priceDis[i].text}', '{filename}')""")
connection.commit()
cursor.close()
connection.close()
@@ -12,4 +12,3 @@ product_name=soup.find_all('a', class_='title')
description=soup.find_all('span', class_='description')
for product_name, description in zip(product_name, description):
print(f"Продукт: {product_name.text} \nОписание: {description.text}")
print(" ")
+9 -10
View File
@@ -4,6 +4,7 @@ from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
import time
import config
i = 1
s = Service("С:\DATA\ChromeDriver\chromedriver.exe")
browser = webdriver.Chrome(service=s)
@@ -22,14 +23,14 @@ productst = soup.find_all('a', class_="product-title__text")
pricest = soup.find_all('span', class_="price__main-value")
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')
connection=psycopg2.connect(host=config.host, dbname=config.dbname, user=config.user, password=config.password)
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),
Product varchar(100),
Price varchar(15),
Diagonal varchar(5),
Resolution varchar(20),
CPU varchar(50),
RAM varchar(15),
Graphics_Controller varchar(40),
@@ -37,7 +38,7 @@ 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(productst)):
@@ -49,13 +50,11 @@ for i in range(len(productst)):
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)
Product, Price, Diagonal, Resolution, CPU, RAM, Graphics_Controller, Volume, src)
VALUES
('{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()
+38
View File
@@ -0,0 +1,38 @@
import telebot
import psycopg2
import config
def execute_request(request):
connection = psycopg2.connect(host=config.host, dbname=config.dbname, user=config.user, password=config.password)
cursor = connection.cursor()
cursor.execute(request)
result = cursor.fetchall()
cursor.close()
connection.close()
return result
max_id = int(execute_request("select count(*) from laptops")[0][0])
bot = telebot.TeleBot(config.bot_token)
@bot.message_handler(commands=["start"])
def start(m, res=False):
bot.send_message(m.chat.id, f'Привет. Введите идентификатор от 1 до {max_id}, чтобы получить данные: ')
@bot.message_handler(content_types=["text"])
def from_bd(message):
try:
current_id = int(message.text)
except BaseException:
bot.send_message(message.chat.id, "Вы неправильно ввели ID. Попробуйте снова:")
return
if current_id > max_id:
bot.send_message(message.chat.id, "ID больше, чем количество товаров. Попробуйте снова:")
return
else:
data = execute_request(f"select * from laptops where id = {current_id}")[0][1:-1]
names_of_columns = ["Товар", "Цена", "Диагональ", "Разрешение", "Процессор", "Оперативная память", "Графический контроллер", "Объём диска"]
everydata = []
for data_name, column_name in zip(data, names_of_columns):
everydata.append(column_name.capitalize() + ": " + data_name)
bot.send_message(message.chat.id, "\n\n".join(everydata))
bot.send_message(message.chat.id, f"Введите следующий ID от 1 до {max_id}:")
bot.polling(none_stop=True, interval=0)
+49
View File
@@ -0,0 +1,49 @@
import psycopg2
import wget
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
connection = psycopg2.connect(host='localhost', dbname='dbdata', user='postgres', password='Q1w2e3r4')
cursor = connection.cursor()
create_table = """ create table dresses
(id serial primary key, name varchar(200), sale varchar(50), price varchar(50), info varchar(50), picture varchar(200))"""
cursor.execute(create_table)
connection.commit()
driver = Service('D:\data\chromedriver.exe')
browser = webdriver.Chrome(service=driver)
browser.get('https://www.ozon.ru/category/platya-zhenskie-7502/')
html_code = browser.page_source
soup = BeautifulSoup(html_code, 'lxml')
names = []
sale = soup.find_all('div', class_="eg1 g3e")
price = soup.find_all('span', class_="a2a-a2")
info = soup.find_all('span', class_="je4")
picture = soup.find_all('div', class_="k1m")
products = soup.find_all("div", class_="k7o o7k")
for product in products:
names.append(soup.find('span', class_="m2e e3m m3e m5e tsBodyL k7l l7k").text.strip())
print(names)
exit(0)
for i in range(20):
url = picture[i].find('img').attrs['src']
file_name = f"C:\\Users\\Honor\\Desktop\\учеба\\прога\\pictures\\{i}.jpg"
wget.download(url, file_name)
ins_table = f"""insert into public.dresses(name, sale, price, info, picture) values ('{name[i].text}', '{sale[i].text}', '{price[i].text}', '{info[i].text}', '{file_name}')"""
cursor.execute(ins_table)
connection.commit()
cursor.close()
connection.close()
+15
View File
@@ -0,0 +1,15 @@
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
s = Service('D:\data\chromedriver.exe')
browser = webdriver.Chrome(service=s)
browser.get('https://www.kfc.ru/')
html_text = browser.page_source
soup = BeautifulSoup(html_text, 'lxml')
prices = soup.find_all(attrs={"class": "GFmMCzZoYv"})
titles = soup.find_all(attrs={"class": "_14ZQf5wtqx c-description"})
for price, title in zip(prices, titles):
print(f" название {title.text} ; цена: {price.text}")
+37
View File
@@ -0,0 +1,37 @@
import telebot
import random
from telebot import types
f = open('C:\\Users\\Honor\\Desktop\\учеба\\прога\\тг_бот\\бот\\факт.txt', 'r', encoding='UTF-8')
facts = f.read().split('\n')
f.close()
f = open('C:\\Users\\Honor\\Desktop\\учеба\\прога\\тг_бот\\бот\\поговорка.txt', 'r', encoding='UTF-8')
thinks = f.read().split('\n')
f.close()
bot = telebot.TeleBot('5696445699:AAEPKQgUAs39DTLr_iyQvlaFAsJNFK8DMnc')
@bot.message_handler(commands=["start"])
def start(m, res=False):
markup=types.ReplyKeyboardMarkup(resize_keyboard=True)
item1=types.KeyboardButton("Факт")
item2=types.KeyboardButton("Поговорка")
markup.add(item1)
markup.add(item2)
bot.send_message(m.chat.id, 'Нажми: \nФакт'
' для получения интересного факта\nПоговорка '
'— для получения мудрой цитаты ', reply_markup=markup)
@bot.message_handler(content_types=["text"])
def handle_text(message):
if message.text.strip() == 'Факт' :
answer = random.choice(facts)
elif message.text.strip() == 'Поговорка':
answer = random.choice(thinks)
bot.send_message(message.chat.id, answer)
bot.polling(none_stop=True, interval=0)
+43
View File
@@ -0,0 +1,43 @@
from bs4 import BeautifulSoup
from selenium.webdriver import Chrome
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
import psycopg2
import wget
import time
connection = psycopg2.connect(host='localhost', dbname='dbdata', user='postgres', password='Q1w2e3r4')
cursor = connection.cursor()
s = Service('C:/Users/rusta/OneDrive/Рабочий стол/ИНФА/инфа 2 сем/driver/chromedriver.exe')
browser = webdriver.Chrome(service=s)
browser.get('https://www.kp.ru/expert/elektronika/luchshie-noutbuki/')
time.sleep (10)
html_text = browser.page_source
soup = BeautifulSoup(html_text, 'lxml')
creat_table="""create table notes
(id serial primary key, name varchar(150),
scr varchar(150))"""
cursor.execute(creat_table)
connection.commit()
names= soup.find_all('h3', class_="wp-block-heading")
pictures = soup.find_all('figure', class_="wp-block-image size-full")
print(len(names))
for i in range(len(names)):
url = pictures[i].find('img')['src']
filename = f"C:\\Users\\rusta\\OneDrive\\Рабочий стол\\pictures\\{i}.jpg"
wget.download(url, filename)
insert_qwery = """INSERT INTO public.notes(name, scr)
VALUES( %s, %s, %s);"""
record_to_insert = (names[i].text, filename)
cursor.execute(insert_qwery, record_to_insert)
connection.commit()
cursor.close()
connection.close()
+15
View File
@@ -0,0 +1,15 @@
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
import time
s = Service('C:/Users/rusta/OneDrive/Рабочий стол/ИНФА/инфа 2 сем/driver/chromedriver.exe')
browser = webdriver.Chrome(service=s)
browser.get('https://lafoy.ru/modnye-muzhskie-strizhki-2023-3052/')
time.sleep (10)
html_text = browser.page_source
soup = BeautifulSoup(html_text, 'lxml')
haircuts = soup.find_all('h2', class_='tm8 post__title')
for i in range(0, 30):
print(haircuts[i].text)
+1
View File
@@ -0,0 +1 @@
+39
View File
@@ -0,0 +1,39 @@
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
import psycopg2
import wget
connection = psycopg2.connect(host='localhost', dbname='dbdata', user='postgres', password='Q1w2e3r4')
cursor = connection.cursor()
crtable = """ create table Notebooks
(id serial primary key, name varchar(500), description varchar(500), code varchar(200), price varchar(100),
picture varchar(500)) """
cursor.execute(crtable)
connection.commit()
s = Service('C:\\Users\\Yekaterina\\Downloads\\chromedriver_win32\\chromedriver.exe')
browser = webdriver.Chrome(service=s)
browser.get('https://www.citilink.ru/catalog/noutbuki/')
html_text = browser.page_source
soup = BeautifulSoup(html_text, 'lxml')
name = soup.find_all('div', class_='app-catalog-1tp0ino e1an64qs0')
description = soup.find_all('div', class_='app-catalog-1o4umte eevw8x70')
code = soup.find_all('div', class_= 'app-catalog-0 e1dsj6g20')
price = soup.find_all('div', class_= 'app-catalog-0 e1dsj6g20')
picture = soup.find_all('div', class_='app-catalog-0 e1jarwcz0')
for i in range(len(name)):
url = picture[i].find('img').attrs['src']
file = f"C:\\Users\\Yekaterina\\Desktop\\baza\\pic{i}.JPG"
wget.download(url, file)
ins_qwery = f"""insert into public.Notebooks(name, description, code, price, picture)
values ('{name[i].text}', '{description[i].text}', '{code[i].text}', '{price[i].text}','{file}')"""
cursor.execute(ins_qwery)
connection.commit()
cursor.close()
connection.close()
+36
View File
@@ -0,0 +1,36 @@
import telebot
import psycopg2
import config
from telebot import types
import random
import tableCreator
connection = psycopg2.connect(host='localhost', dbname='parc', user='postgres', password='Q1w2e3r4')
cursor = connection.cursor()
ins_query = """SELECT * FROM public.Notebooks"""
cursor.execute(ins_query)
array = list(cursor.fetchall())
bot = telebot.TeleBot('6205726630:AAF4zfV_P2b0f7bClm__sWuRmoZ1XpiC_xo')
@bot.message_handler(commands=["start"])
def start(m, res=False):
markup=types.ReplyKeyboardMarkup(resize_keyboard=True)
item1=types.KeyboardButton("Выбери ноутбук")
item2=types.KeyboardButton("Еще!")
markup.add(item1)
markup.add(item2)
bot.send_message(m.chat.id, 'Нажми: \nВыбери ноутбук'
' для просмотра товара\nЕще! '
'— для повтора', reply_markup=markup)
@bot.message_handler(content_types=["text"])
def handle_text(message):
if message.text.strip() == 'Выбери ноутбук' :
q = random.choice(array)
answer = f'Название: {q[1]}\nОписание: {q[2]}\nКод: {q[3]}\nЦена: {q[4]}\n'
bot.send_message(message.chat.id, answer)
bot.send_picture(message.chat.id, open(q[5], 'rb'))
elif message.text.strip() == 'Еще!':
bot.send_message(message.chat.id, 'Ввод: '+ message.text)
bot.polling(none_stop=True, interval=0)
@@ -1,6 +1,5 @@
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from wget import download
import psycopg2 as psyc
@@ -27,5 +26,4 @@ with psyc.connect(dbname="db_for_parse", user="perfecto") as conn:
cursor.execute(f"""insert into images(link, name, price, description, file)
values ('{image}', '{title}', '{price}', '{desc}', 'images/{i}.jpg')""")
conn.commit()
+50
View File
@@ -0,0 +1,50 @@
import telebot as tb
import config
import psycopg2 as ps
def exec_query(query: str) -> list:
with ps.connect(dbname=config.db_name, user=config.user) as conn:
with conn.cursor() as cur:
cur.execute(query)
res = cur.fetchall()
return res
def get_data(mess, bot, rows_number: int) -> None:
try:
product_id = int(mess.text)
except BaseException:
bot.send_message(mess.chat.id, "Invalid id")
return
if product_id > rows_number:
bot.send_message(mess.chat.id, "Id is bigger than number of products")
return
else:
data = exec_query(
f"select * from images where id = {product_id}")[0][1:]
bot.send_message(mess.chat.id, "\n\n".join(data))
bot = tb.TeleBot(config.token)
keyboard = tb.types.ReplyKeyboardMarkup()
keyboard.row("get data")
@bot.message_handler(commands=["start"])
def hi(mess):
bot.send_message(mess.chat.id, "HI there!", reply_markup=keyboard)
@bot.message_handler(content_types=["text"])
def f(mess):
if mess.text == "get data":
row_number = int(exec_query("select count(*) from images")[0][0])
bot.send_message(mess.chat.id, f"Write id between 1 and {row_number}")
bot.register_next_step_handler(mess, get_data, bot, row_number)
bot.polling(non_stop=True)
+6 -8
View File
@@ -3,6 +3,7 @@ from selenium import webdriver
from selenium.webdriver.chrome.service import Service
import psycopg2
import wget
import time
connection = psycopg2.connect(host='localhost', dbname='dbdata', user='postgres', password='Q1w2e3r4')
cursor = connection.cursor()
@@ -11,6 +12,7 @@ s = Service('D:\Games\data\chromedriver.exe')
browser = webdriver.Chrome(service=s)
browser.get('https://www.volkswagen.ru/polo/')
html_text = browser.page_source
time.sleep(2)
soup = BeautifulSoup(html_text, 'lxml')
creat_table = """ create table Cars_volks
@@ -25,17 +27,13 @@ prices = soup.find_all('div', class_='avn001-2_price-container')
adresses = soup.find_all('div', class_='avn001-2_dealer-link__text')
pictures = soup.find_all('div', class_='avn001-2_image image__container')
#for car_name, adress, price in zip(car_names, adresses, prices):
# print(f"Название машины:{car_name.text} | Адрес диллера: {adress.text} | Цена: {price.text} рублей")
for i in range(len(car_names)):
url = pictures[i].find('img').attrs['src']
filename = f"c22712\\Задания\\task1\\nikitin\\img\\{i}.jpg"
# wget.download(url, filename) представим что картинки скачались:)
url = pictures[i].find('img')['src']
filename = f"C:\\Users\\Пользователь\\OneDrive\\Рабочий стол\\pycharm\\c22712\\Задания\\task1\\nikitin\\img\{i}.jpg"
wget.download(url, filename)
insert_qwery = f"""INSERT INTO public.Cars_volks(car_name, price, adress, scr)
VALUES ('{car_names[i].text}', '{prices[i].text}', '{adresses[i].text}', '{filename}')""";
cursor.execute(insert_qwery)
#cursor.execute(insert_qwery)
connection.commit()
cursor.close()
+43
View File
@@ -0,0 +1,43 @@
import wget
import psycopg2
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
connection = psycopg2.connect(host='localhost', dbname='postgres',
user='postgres', password='Q1w2e3r4')
cursor = connection.cursor()
cr_qwery = """ create table parser
(id serial primary key,
name varchar(60),
price varchar(15),
picture varchar(100))"""
cursor.execute(cr_qwery)
connection.commit()
s = Service('C:\Desktop\exe\chromedriver.exe')
browser = webdriver.Chrome(service=s)
browser.get('https://www.hellride.ru/catalog/zapchasti-dlya-tryukovyh-samokatov/deki')
html_code = browser.page_source
soup = BeautifulSoup(html_code, 'lxml')
name = soup.find_all('span', class_='product-card__title')
price = soup.find_all('span', class_='product-card__price')
picture = soup.find_all('img', class_='product-slider__slide-img swiper-lazy swiper-lazy-loaded')
#for prices, names in zip(price, name,):
#print(f" название {names.text} ; цена: {prices.text} ")
for i in range(len(name)):
url = picture[i].attrs['src']
filename = f"C:\\Users\\Михаил\PycharmProjects\pythonProject8\\venv\Pictures\{i}.jpg"
wget.download(url, filename)
ins_qwery = f"""insert into public.Parser(name, price, picture)
values ('{name[i].text}', '{price[i].text}', '{filename}')"""
cursor.execute(ins_qwery)
connection.commit()
cursor.close()
connection.close()