mirror of
https://github.com/KUlishevgeniy/c22712.git
synced 2026-09-24 08:00:22 +00:00
Merge branch 'master' of https://github.com/KUlishevgeniy/c22712
This commit is contained in:
Generated
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
<content url="file://$MODULE_DIR$">
|
<content url="file://$MODULE_DIR$">
|
||||||
<excludeFolder url="file://$MODULE_DIR$/venv" />
|
<excludeFolder url="file://$MODULE_DIR$/venv" />
|
||||||
</content>
|
</content>
|
||||||
<orderEntry type="jdk" jdkName="Python 3.9 (venv)" jdkType="Python SDK" />
|
<orderEntry type="jdk" jdkName="Python 3.9" jdkType="Python SDK" />
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
</component>
|
</component>
|
||||||
</module>
|
</module>
|
||||||
Generated
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9 (venv)" project-jdk-type="Python SDK" />
|
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9" project-jdk-type="Python SDK" />
|
||||||
</project>
|
</project>
|
||||||
Generated
+48
-32
@@ -4,12 +4,11 @@
|
|||||||
<option name="autoReloadType" value="SELECTIVE" />
|
<option name="autoReloadType" value="SELECTIVE" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="e5615680-c090-497d-a104-1337ed85f850" name="Changes" comment="Дз парсинг">
|
<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/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/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$/.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" />
|
<change beforePath="$PROJECT_DIR$/Задания/task1/Prokhorova/парсинггг.py" beforeDir="false" afterPath="$PROJECT_DIR$/Задания/task1/Prokhorova/parsing.py" afterDir="false" />
|
||||||
</list>
|
</list>
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
@@ -39,36 +38,52 @@
|
|||||||
<option name="hideEmptyMiddlePackages" value="true" />
|
<option name="hideEmptyMiddlePackages" value="true" />
|
||||||
<option name="showLibraryContents" value="true" />
|
<option name="showLibraryContents" value="true" />
|
||||||
</component>
|
</component>
|
||||||
<<<<<<< HEAD
|
|
||||||
<component name="PropertiesComponent">{
|
|
||||||
"keyToString": {
|
|
||||||
"last_opened_file_path": "C:/Users/Honor/c22712"
|
|
||||||
}
|
|
||||||
}</component>
|
|
||||||
<component name="RunManager" selected="Python.zaparsil">
|
|
||||||
=======
|
|
||||||
<component name="PropertiesComponent"><![CDATA[{
|
<component name="PropertiesComponent"><![CDATA[{
|
||||||
"keyToString": {
|
"keyToString": {
|
||||||
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
"last_opened_file_path": "C:/Users/Honor/Desktop/учеба/прога/c22712/Задания/task1/Prokhorova",
|
||||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
|
||||||
"last_opened_file_path": "C:/Users/Honor/Desktop/учеба/прога/c22712",
|
|
||||||
"settings.editor.selected.configurable": "com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable"
|
"settings.editor.selected.configurable": "com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable"
|
||||||
}
|
}
|
||||||
}]]></component>
|
}]]></component>
|
||||||
<component name="RunManager" selected="Python.tgbot">
|
<component name="RecentsManager">
|
||||||
<configuration name="dz" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
<key name="CopyFile.RECENT_KEYS">
|
||||||
|
<recent name="C:\Users\Honor\Desktop\учеба\прога\c22712\Задания\task1\Prokhorova" />
|
||||||
|
</key>
|
||||||
|
</component>
|
||||||
|
<component name="RunManager" selected="Python.errors">
|
||||||
|
<configuration name="DZ_PARSBD" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
||||||
<module name="22712" />
|
<module name="22712" />
|
||||||
<option name="INTERPRETER_OPTIONS" value="" />
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
<option name="PARENT_ENVS" value="true" />
|
<option name="PARENT_ENVS" value="true" />
|
||||||
<envs>
|
<envs>
|
||||||
<env name="PYTHONUNBUFFERED" value="1" />
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
</envs>
|
</envs>
|
||||||
<option name="SDK_HOME" value="C:\Users\Honor\PycharmProjects\pythonProject\venv\Scripts\python.exe" />
|
<option name="SDK_HOME" value="" />
|
||||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/Задания/task1/Prokhorova" />
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/Задания/task1/Sukhanov" />
|
||||||
<option name="IS_MODULE_SDK" value="false" />
|
<option name="IS_MODULE_SDK" value="true" />
|
||||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/Задания/task1/Prokhorova/dz.py" />
|
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/Задания/task1/Sukhanov/DZ_PARSBD.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="errors" 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="" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/Задания/task1/Prokhorova" />
|
||||||
|
<option name="IS_MODULE_SDK" value="true" />
|
||||||
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
|
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||||
|
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/Задания/task1/Prokhorova/errors.py" />
|
||||||
<option name="PARAMETERS" value="" />
|
<option name="PARAMETERS" value="" />
|
||||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
<option name="EMULATE_TERMINAL" value="false" />
|
<option name="EMULATE_TERMINAL" value="false" />
|
||||||
@@ -77,7 +92,6 @@
|
|||||||
<option name="INPUT_FILE" value="" />
|
<option name="INPUT_FILE" value="" />
|
||||||
<method v="2" />
|
<method v="2" />
|
||||||
</configuration>
|
</configuration>
|
||||||
>>>>>>> d1c29f6 (телеграмм бот)
|
|
||||||
<configuration name="main" type="PythonConfigurationType" factoryName="Python" nameIsGenerated="true">
|
<configuration name="main" type="PythonConfigurationType" factoryName="Python" nameIsGenerated="true">
|
||||||
<module name="22712" />
|
<module name="22712" />
|
||||||
<option name="INTERPRETER_OPTIONS" value="" />
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
@@ -100,19 +114,19 @@
|
|||||||
<option name="INPUT_FILE" value="" />
|
<option name="INPUT_FILE" value="" />
|
||||||
<method v="2" />
|
<method v="2" />
|
||||||
</configuration>
|
</configuration>
|
||||||
<configuration name="tgbot" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
<configuration name="mistakes" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
||||||
<module name="22712" />
|
<module name="22712" />
|
||||||
<option name="INTERPRETER_OPTIONS" value="" />
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
<option name="PARENT_ENVS" value="true" />
|
<option name="PARENT_ENVS" value="true" />
|
||||||
<envs>
|
<envs>
|
||||||
<env name="PYTHONUNBUFFERED" value="1" />
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
</envs>
|
</envs>
|
||||||
<option name="SDK_HOME" value="C:\Users\Honor\PycharmProjects\pythonProject\venv\Scripts\python.exe" />
|
<option name="SDK_HOME" value="" />
|
||||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/../тг бот" />
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/Задания/task1/Sukhanov" />
|
||||||
<option name="IS_MODULE_SDK" value="false" />
|
<option name="IS_MODULE_SDK" value="true" />
|
||||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/../тг бот/tgbot.py" />
|
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/Задания/task1/Sukhanov/mistakes.py" />
|
||||||
<option name="PARAMETERS" value="" />
|
<option name="PARAMETERS" value="" />
|
||||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
<option name="EMULATE_TERMINAL" value="false" />
|
<option name="EMULATE_TERMINAL" value="false" />
|
||||||
@@ -144,8 +158,9 @@
|
|||||||
</configuration>
|
</configuration>
|
||||||
<recent_temporary>
|
<recent_temporary>
|
||||||
<list>
|
<list>
|
||||||
<item itemvalue="Python.tgbot" />
|
<item itemvalue="Python.errors" />
|
||||||
<item itemvalue="Python.dz" />
|
<item itemvalue="Python.mistakes" />
|
||||||
|
<item itemvalue="Python.DZ_PARSBD" />
|
||||||
<item itemvalue="Python.zaparsil" />
|
<item itemvalue="Python.zaparsil" />
|
||||||
</list>
|
</list>
|
||||||
</recent_temporary>
|
</recent_temporary>
|
||||||
@@ -209,12 +224,12 @@
|
|||||||
<option name="project" value="LOCAL" />
|
<option name="project" value="LOCAL" />
|
||||||
<updated>1680206771744</updated>
|
<updated>1680206771744</updated>
|
||||||
</task>
|
</task>
|
||||||
<task id="LOCAL-00008" summary="Дз парсинг">
|
<task id="LOCAL-00008" summary="Дз парсинг ВВ">
|
||||||
<created>1680207517708</created>
|
<created>1684673567872</created>
|
||||||
<option name="number" value="00008" />
|
<option name="number" value="00008" />
|
||||||
<option name="presentableId" value="LOCAL-00008" />
|
<option name="presentableId" value="LOCAL-00008" />
|
||||||
<option name="project" value="LOCAL" />
|
<option name="project" value="LOCAL" />
|
||||||
<updated>1680207517708</updated>
|
<updated>1684673567872</updated>
|
||||||
</task>
|
</task>
|
||||||
<option name="localTasksCounter" value="9" />
|
<option name="localTasksCounter" value="9" />
|
||||||
<servers />
|
<servers />
|
||||||
@@ -237,7 +252,8 @@
|
|||||||
<MESSAGE value="Первый коммит" />
|
<MESSAGE value="Первый коммит" />
|
||||||
<MESSAGE value="parser" />
|
<MESSAGE value="parser" />
|
||||||
<MESSAGE value="Дз парсинг" />
|
<MESSAGE value="Дз парсинг" />
|
||||||
<option name="LAST_COMMIT_MESSAGE" value="Дз парсинг" />
|
<MESSAGE value="Дз парсинг ВВ" />
|
||||||
|
<option name="LAST_COMMIT_MESSAGE" value="Дз парсинг ВВ" />
|
||||||
</component>
|
</component>
|
||||||
<component name="XDebuggerManager">
|
<component name="XDebuggerManager">
|
||||||
<breakpoint-manager>
|
<breakpoint-manager>
|
||||||
|
|||||||
@@ -23,6 +23,8 @@ finally:
|
|||||||
|
|
||||||
bot = telebot.TeleBot('5980905704:AAH2qIP4Gy60nhuKNAojOGpmI6zwNoJK1Iw')
|
bot = telebot.TeleBot('5980905704:AAH2qIP4Gy60nhuKNAojOGpmI6zwNoJK1Iw')
|
||||||
|
|
||||||
|
min_id, max_id = 1, 60
|
||||||
|
|
||||||
@bot.message_handler(commands=["start"])
|
@bot.message_handler(commands=["start"])
|
||||||
def start(m, res=False):
|
def start(m, res=False):
|
||||||
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
|
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
|
||||||
@@ -30,12 +32,14 @@ def start(m, res=False):
|
|||||||
item2 = types.KeyboardButton("Хочу картинку любых цветов, пожалуйста")
|
item2 = types.KeyboardButton("Хочу картинку любых цветов, пожалуйста")
|
||||||
item3 = types.KeyboardButton("Хочу информацию о предложении дня, пожалуйста")
|
item3 = types.KeyboardButton("Хочу информацию о предложении дня, пожалуйста")
|
||||||
item4 = types.KeyboardButton("Общая информация о сведениях, находящихся в базе данных")
|
item4 = types.KeyboardButton("Общая информация о сведениях, находящихся в базе данных")
|
||||||
|
item5 = types.KeyboardButton("Поиск конкретного предложения по ID")
|
||||||
markup.add(item1)
|
markup.add(item1)
|
||||||
markup.add(item2)
|
markup.add(item2)
|
||||||
markup.add(item3)
|
markup.add(item3)
|
||||||
markup.add(item4)
|
markup.add(item4)
|
||||||
|
markup.add(item5)
|
||||||
bot.send_message(m.chat.id,
|
bot.send_message(m.chat.id,
|
||||||
'"Хочу информацию о любых цветах, пожалуйста" - для получения карточки цветов;\n "Хочу картинку любых цветов, пожалуйста" - для получения картинки цветов;\n "Хочу информацию о предложении дня, пожалуйста" - сводка о конкретных цветах;\n "Общая информация о сведениях, находящихся в базе данных" - сводка об характеристиках товаров, информация о которых находится в БД.',
|
'"Хочу информацию о любых цветах, пожалуйста" - для получения карточки цветов;\n "Хочу картинку любых цветов, пожалуйста" - для получения картинки цветов;\n "Хочу информацию о предложении дня, пожалуйста" - сводка о конкретных цветах;\n "Общая информация о сведениях, находящихся в базе данных" - сводка об характеристиках товаров, информация о которых находится в БД.\n "Поиск конкретного предложения по ID" - найдите инересующее вас предложение по ID',
|
||||||
reply_markup=markup)
|
reply_markup=markup)
|
||||||
|
|
||||||
@bot.message_handler(content_types=["text"])
|
@bot.message_handler(content_types=["text"])
|
||||||
@@ -54,9 +58,26 @@ def handle_text(message):
|
|||||||
bot.send_message(message.chat.id, "Предложение дня:\n")
|
bot.send_message(message.chat.id, "Предложение дня:\n")
|
||||||
bot.send_message(message.chat.id, a1)
|
bot.send_message(message.chat.id, a1)
|
||||||
bot.send_photo(message.chat.id, open(i[4], 'rb'))
|
bot.send_photo(message.chat.id, open(i[4], 'rb'))
|
||||||
|
elif (message.text.strip() == "Поиск конкретного предложения по ID"):
|
||||||
|
sent = bot.send_message(message.chat.id,
|
||||||
|
f'Введите идентификатор(ID, целое число) от {min_id} до {max_id}, чтобы получить информацию о конкретном предложении: ')
|
||||||
|
bot.register_next_step_handler(sent, ret_id)
|
||||||
else:
|
else:
|
||||||
bot.send_message(message.chat.id, "С помощью данного бота вы можете получить информацию о 60-и цветах одного из московских магазинов по их продаже, в частности их: название, цену, скидку(в процентах) и фото. Вы можете это осуществить, взаимодействуя с ботом. Попробуйте! ")
|
bot.send_message(message.chat.id, "С помощью данного бота вы можете получить информацию о 60-и цветах одного из московских магазинов по их продаже, в частности их: название, цену, скидку(в процентах) и фото. Вы можете это осуществить, взаимодействуя с ботом. Попробуйте! ")
|
||||||
|
|
||||||
|
def ret_id(message):
|
||||||
|
try:
|
||||||
|
now_id = (message.text)
|
||||||
|
now_id = int(float(now_id))
|
||||||
|
z = list(select(now_id))
|
||||||
|
a2 = f'Название: {z[1]};\nЦена: {z[2]};\nСкидка(в процентах): {z[3]};\n'
|
||||||
|
bot.send_message(message.chat.id, a2)
|
||||||
|
bot.send_photo(message.chat.id, open(z[4], 'rb'))
|
||||||
|
bot.send_message(message.chat.id, "Для повторного поиска по ID воспользуйтесь соответствующей кнопкой в 'меню'")
|
||||||
|
except ValueError:
|
||||||
|
bot.send_message(message.chat.id,
|
||||||
|
"По такому ID нет данных. Попробуйте заново через 'меню' кнопок найти интересующее вас предложение")
|
||||||
|
|
||||||
bot.polling(none_stop=True, interval=0)
|
bot.polling(none_stop=True, interval=0)
|
||||||
|
|
||||||
cursor.close()
|
cursor.close()
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|
||||||
|
create_table = """ create table food
|
||||||
|
(id serial primary key, name varchar(200), price varchar(100), gram varchar(100), stock varchar(100))"""
|
||||||
|
|
||||||
|
cursor.execute(create_table)
|
||||||
|
connection.commit()
|
||||||
|
|
||||||
|
driver = Service('C:\\Users\\Honor\\Desktop\\учеба\\прога\\скачали хроме\chromedriver.exe')
|
||||||
|
browser = webdriver.Chrome(service=driver)
|
||||||
|
browser.get('https://vkusvill.ru/goods/gotovaya-eda/')
|
||||||
|
html_code = browser.page_source
|
||||||
|
soup = BeautifulSoup(html_code, 'lxml')
|
||||||
|
|
||||||
|
name = soup.find_all('a', class_="ProductCard__link rtext _desktop-md _mobile-sm gray900 js-datalayer-catalog-list-name")
|
||||||
|
price = soup.find_all('span', class_="Price Price--md Price--label Price--gray")
|
||||||
|
gram = soup.find_all('div', class_="ProductCard__weight rtext _desktop-sm gray500 nobr")
|
||||||
|
stock = soup.find_all('div', class_="Rating__text subtitle _desktop-sm gray900")
|
||||||
|
|
||||||
|
|
||||||
|
for i in range(15):
|
||||||
|
|
||||||
|
|
||||||
|
ins_qwery = f"""insert into public.food(name, price, gram, stock) values ('{name[i].text}', '{price[i].text}', '{gram[i].text}', '{stock[i].text}')"""
|
||||||
|
cursor.execute(ins_qwery)
|
||||||
|
connection.commit()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
cursor.close()
|
||||||
|
|
||||||
|
connection.close()
|
||||||
@@ -8,7 +8,7 @@ connection = psycopg2.connect(host='localhost', dbname='dbdata', user='postgres'
|
|||||||
cursor = connection.cursor()
|
cursor = connection.cursor()
|
||||||
|
|
||||||
cr_qwery = """ create table Parser
|
cr_qwery = """ create table Parser
|
||||||
(id serial primary key, name varchar(100), sale varchar(30), price varchar(10), rate varchar(10), picture varchar(100))"""
|
(id serial primary key, name varchar(100), price varchar(10), rate varchar(10), picture varchar(100))"""
|
||||||
|
|
||||||
#cursor.execute(cr_qwery)
|
#cursor.execute(cr_qwery)
|
||||||
connection.commit()
|
connection.commit()
|
||||||
@@ -20,7 +20,6 @@ html_code = browser.page_source
|
|||||||
soup = BeautifulSoup(html_code, 'lxml')
|
soup = BeautifulSoup(html_code, 'lxml')
|
||||||
|
|
||||||
name = soup.find_all('div', class_="product-card__title")
|
name = soup.find_all('div', class_="product-card__title")
|
||||||
sale = soup.find_all('div', class_="sc-kYrlTI ciSrDA product-card__badge")
|
|
||||||
price = soup.find_all('div', class_="price-new")
|
price = soup.find_all('div', class_="price-new")
|
||||||
rate = soup.find_all('div', class_="rating-value")
|
rate = soup.find_all('div', class_="rating-value")
|
||||||
picture = soup.find_all('div', class_="product-card__image-wrapper")
|
picture = soup.find_all('div', class_="product-card__image-wrapper")
|
||||||
@@ -29,7 +28,7 @@ for i in range(15):
|
|||||||
url = picture[i].find('img').attrs['src']
|
url = picture[i].find('img').attrs['src']
|
||||||
filename = f"C:\\Users\\71332\PycharmProjects\pythonProject1\\venv\Pictures\{i}.jpg"
|
filename = f"C:\\Users\\71332\PycharmProjects\pythonProject1\\venv\Pictures\{i}.jpg"
|
||||||
wget.download(url, filename)
|
wget.download(url, filename)
|
||||||
ins_qwery = f"""insert into public.Parser(name, sale, price, rate, picture) values ('{name[i].text}', '{sale[i].text}', '{price[i].text}', '{rate[i].text}', '{filename}')"""
|
ins_qwery = f"""insert into public.Parser(name, price, rate, picture) values ('{name[i].text}', '{price[i].text}', '{rate[i].text}', '{filename}')"""
|
||||||
cursor.execute(ins_qwery)
|
cursor.execute(ins_qwery)
|
||||||
connection.commit()
|
connection.commit()
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
import psycopg2
|
||||||
|
import wget
|
||||||
|
|
||||||
|
from Задания.task1.Sukhanov import DZ_PARSBD
|
||||||
|
|
||||||
|
connection = psycopg2.connect(host='localhost', dbname='dbdata', user='postgres', password='Q1w2e3r4')
|
||||||
|
cursor = connection.cursor()
|
||||||
|
cr_qwery = '''create table Parser (id serial primary key, name varchar(100), price varchar(10), rate varchar(10), picture varchar(100))'''
|
||||||
|
|
||||||
|
try:
|
||||||
|
cursor.execute(cr_qwery)
|
||||||
|
connection.commit()
|
||||||
|
except psycopg2.errors.DuplicateTable:
|
||||||
|
print("duplicate error")
|
||||||
|
|
||||||
|
for j in range(15):
|
||||||
|
url = DZ_PARSBD.picture[j].find('img').attrs['src']
|
||||||
|
tempf = f"img\\Parser{j}.jpg"
|
||||||
|
wget.download(url, tempf)
|
||||||
|
try:
|
||||||
|
insert_query = f'''INSERT into public.Parser(name, price, rate, picture) values ('{DZ_PARSBD.name[j].text}', '{DZ_PARSBD.price[j].text}', '{DZ_PARSBD.rate[j].text}', '{tempf}') '''
|
||||||
|
cursor.execute(insert_query)
|
||||||
|
connection.commit()
|
||||||
|
except:
|
||||||
|
connection.rollback()
|
||||||
|
|
||||||
|
cursor.close()
|
||||||
|
connection.close()
|
||||||
Reference in New Issue
Block a user