Webdriver Chrome в телеграм боте обрабатывает только 1 запрос от 1 пользователя (когда было отправлено 2 запроса). Python
Уже месяц изучаю питон и окунулся в телеграм ботов. Столкнулся с проблемой при использовании webdriver Chrome в телеграм боте на Python (telebot). В общем, проблема в чем. Допустим боту одновременно написали 2 человека с одним запросом по парсингу погоды (в разных городах, коль такая возможность есть), тем временем телеграм бот ловит сообщение, которое пришло последним (второе) и запускает скрипт в webdriver только на запрос от второго пользователя. По итогу оба получают ответ на запрос второго пользователя (сори за тавтологию). То есть первый получил ответ на запрос второго, а второй получил то, что хотел.
Можно ли сделать так, чтобы вебдрайвер мог обрабатывать несколько запросов одновременно? Или может есть другие способы парсинга сайтов, чтобы это обрабатывалось одновременно на уровне большого количества запросов? (не думаю, что виноват именно telebot, потому что здесь это обрабатывает после запроса именно вебдрайвер) Буду рад любым ответам и советам, спасибо!
Ответы (1 шт):
Если хотите парсить сайты (web scraping) я могу вам предложить использовать aiohttp / requests + BeautifulSoup
aiohttp использует asyncio, чтобы посылать запросы асинхронно (читай быстро), освоить не очень сложно.
requests посылает запросы синхронно, хотя его можно ускорить помощью multiprocessing, лучше предпочесть вариант с asyncio, его не сложно выучить, зато меньше проблем.
Selenium же в основным используется для тестирования веб сайтов (затем ему и нужен UI в виде отдельного браузера), и парсинг - не его главное предназначение.
Вот туториал, по aiohttp + BeautifulSoup
И вот для requests + BeautifulSoup
На счёт вашей проблемы с тем, что один ответ посылается двум пользователям:
Вам надо переделать систему ответа пользователям, чтобы для каждого нового сообщения был запущен отдельный запрос (если они разные, но можно об этом не париться, пока у вас не очень много запросов).
Так как у нас нет вашего кода, невозможно указать конкретно, что надо переделывать, но если у вас появился вопросы, как конкретно что-либо реализовать, задайте их отдельно, с примером вашей реализации (если есть).