@RazDvaMan

Парсинг виджета AppEvent через GColab?

Привет.
Встала задача - посчитать рынок (количество часов) по крупным игрокам. Почти все сидят на виджете бронирования AppeventRU, пробую его парсить через Google Colab с библиотекой BeautifulSoup. Опыт, считай, ноль, однако в прошлом - соприкасался с ООП.

Идея такая: открывая в браузере нужный сайт - вижу информацию о совершенных бронях. Хочу собирать данные автоматически (интервал 15 минут). Сейчас застрял в самом начале: нужная мне информация прекрасно видна глазами, но увидеть ее через bs4 у меня не выходит, возвращается какая-то другая страница, а не тот код, который я вижу - когда в браузере на исследуемой странице запускаю инспектор сайта.

Вот моя логика парсинга, как я хочу парсить:
1) так как я вижу (глазами), что свободные часы в виджете не закрашены цветом, то я понимаю, что могу искать блоки с определенным форматированием в коде. Я открыл страницу через инспектор и выяснил, что нужные мне DIV блоки свободных часов имеют определенные значения class. Я взял это значение class и просто запустил поиск по инспектору - как результат - он нашел совпадения 18 раз (для примера). В моем случае это означает, что 18/2=9 свободных часов отображает веб страница (глазами я так и вижу). Если я ставлю бронь на час, то повторный поиск уже показывает 16 совпадений.
Я понимаю, что мне нужно искать, но не могу заставить bs4 найти мне это. Да ладно - найти, я не могу его заставить увидеть страницу так же, как она декомпилируется в инспекторе сайта :(

Так я передаю нужную мне страницу в bs4
import requests
from bs4 import BeautifulSoup

#get page
rurl = 'https://appevent.ru/widget/embeded?widget_key=0464f0c97573abd8c6b49e1991a24233&hall_id=12215&aew_ref_utm=&roistat_visit='
page = requests.get(rurl)
print(page.status_code) #возвращает 200 - все норм
#
#string="timetable__schedule-tick_selectable") - это строка, которую мне нужно найти - в инспекторе в структуре - она есть столько раз, сколько есть свободных часов

soup=BeautifulSoup(page.text,"html.parser")
print(soup)


когда исполняется код - я вижу совершенно другой код страницы - с другими Div'ами и там нет ни одного нужного мне div со значением class в котором есть искомые мной слова "timetable__schedule-tick_selectable".

Мой вопрос такой: как мне машинно (через bs4 в google colab) увидеть структуру нужной мне страницы точно так же, как ее видит инспектор сайта в Хром?
  • Вопрос задан
  • 53 просмотра
Пригласить эксперта
Ответы на вопрос 1
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Коротко: никак. BS4 не решает вашу проблему. Это просто разбиралка полученного текста.
Вам надо получить текст, а его, конечно, генерирует какой-то код, вероятно JS, который вам загружает страница, но он у вас не исполняется, так как requests не умеет исполнять код JS.

Есть два пути:
  • Разбираться, что за код загружается, и как-то его пытаться выполнить, или сгенерировать запросы, которые этот код шлет;
  • либо использовать управление браузером, который это всё проделает. Типа webdrive (Selenium и т.п.)


Ну и еще пользоваться поиском, подобный вопрос задают тут раз в неделю уже который год.

P.s.: Вроде бы есть какие-то библиотеки типа requests_html, якобы умеющие в JS, поищите.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы