Пытаюсь сделать парсер который будет циклично и одновременно обрабатывать ссылки в разных вкладках браузера
Нужно что бы при вызове функции check_presence_icon (в моем случае пользователем телеграмм бота) программа открывала новую вкладку и парсила по порядку ссылки (указанные в таблице USR_Data.sqlite для этого пользователя). Так для каждого пользователя должна быть своя вкладка (ну и обрабатываться одновременно с другими вкладками, других пользователей).
Вот что натыкал для самого парсера на данный момент:
import asyncio
from bs4 import BeautifulSoup
from selenium import webdriver
import time
import pickle
from Login import login_name, login_site
import sqlite3
driver = None
def init_driver():
global driver
try:
driver = webdriver.Chrome()
driver.get(f'{login_site}')
# получение cookies
for cookie in pickle.load(open(f'Cookies/{login_name}_cookies', 'rb')):
driver.add_cookie(cookie)
time.sleep(3)
driver.refresh()
except Exception as e:
print('КРАНТЫ -> ', e)
async def check_presence_icon(u_id, bot):
if driver is None:
init_driver()
with sqlite3.connect('USR_Data.sqlite') as db:
cursor = db.cursor()
cursor.execute("""select usr_url_list from users where usr_chatid = ?""", (u_id,))
one_time_url_get = cursor.fetchone()
url_list = one_time_url_get[0].split(',')
driver.execute_script("window.open('')")
driver.switch_to.window(driver.window_handles[-1])
while True:
for url in url_list:
driver.get(url)
soup = BeautifulSoup(driver.page_source, 'html.parser')
Nickname = soup.find('h1', {'class': 'profile-name text-overflow'}).text
presence_icon = soup.find('span', {'data-testid': 'presence-icon'})
if Nickname is not None:
if presence_icon is not None and 'Website' in presence_icon['title']:
bot.send_message(u_id, f'{Nickname} on Website')
elif presence_icon is None:
bot.send_message(u_id, f'{Nickname} is Offline / Any game')
await asyncio.sleep(5)