Как парсить страницу через определенный промежуток времени?
Я делаю телеграмм бота(библиотека aiogram) который будет присылать пользователю новые объявления на авито(ну это упрощенный функционал). Проблема в том что, я не знаю как парсить страницу через определенное кол-во времени. Я пробовал бесконечный цикл и time.sleep(), но данные не обновляются и бот не реагирует на команду(я думаю это из-за того что хендлер ждет когда выполнится файл), но окна браузера открываются(я использую селениум). Я никак не не знаю как это можно решить, прошу не кидаться тапками я новичок)) прилагаю скриншоты, при надобности могу скинуть весь код.
Это хендлер который отвечает на команду старт
from aiogram import types
from aiogram.dispatcher.filters.builtin import CommandStart
from parse_avito import res
from loader import dp
@dp.message_handler(CommandStart())
async def bot_start(message: types.Message):
caption = """{title}\nКраткое описание: {params}\nГород: {geo}\n
<u>Цена: </u> {price} <b>RUB</b>\n
Сылка на объявление: {link}"""
await message.answer_photo(
photo=res[0]['url_picture'],
caption=caption.format(
params=res[0]['params'],
price=res[0]['price'],
geo=res[0]['geo'],
link=res[0]['link'],
title=res[0]['title']))
это парсер:
from bs4 import BeautifulSoup
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
import time
def avito_parse():
URL = 'https://www.avito.ru/rostovskaya_oblast/avtomobili?cd=1'
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get(URL)
main_page = driver.page_source
r = main_page.encode('utf-8')
soup = BeautifulSoup(r, 'lxml')
items = soup.find_all('div', class_='iva-item-root-G3n7v')
id_item = soup.find('div', class_='items-items-38oUm')
car_info = []
list1 = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0']
count = 0
ids = [tag['id'] for tag in id_item.select('div[id]')]
ids = ids[1:-1]
for item in items:
count += 1
t = item.find('span', class_='price-text-1HrJ_').text
list_itog = []
for i in t:
if i in list1:
list_itog.append(i)
picture = item.find('div', class_='photo-slider-item-
15V4q').find('img')
if picture != None:
picture = str(picture)
e = picture.split('src="')[1]
picture = e.split('"')[0]
car_info.append(
{
'link': 'https://www.avito.ru' + item.find('div',
class_='iva-item-slider-37uKh').find('a').get(
'href'),
'price': ''.join(list_itog),
'url_picture': picture,
'geo': str(item.find('div', class_='geo-georeferences-
3or5Q').find('span').text),
'params': str(item.find('div', class_='iva-item-text-
2xkfp').text),
'title': str(item.find('a', class_='link-link-
39EVK').find('h3').text),
'id': ids[count]
}
)
return car_info
res = avito_parse()