Проблема с поиском элементов по классам с красивым супом

Я пытаюсь получить название событий на этой странице, используя красивый суп 4: https://www.orbitxch.com/customer/sport/1

Я попытался отфильтровать html-код для тегов с class="biab_item-link biab_market-link js-event-link biab_has-time", если бы он, казалось, содержал теги, содержащие каждое уникальное имя события один раз.

Вот мой код

from bs4 import BeautifulSoup
import urllib3


http = urllib3.PoolManager()

url = 'https://www.orbitxch.com/customer/sport/1'
response = http.request('GET', url)
soup = BeautifulSoup(response.data, features="lxml")



for tag in soup.find_all("a", class_="biab_item-link biab_market-link js-event-link biab_has-time"):
        print(tag["title"])

Но ничего не происходит.


person Clipper    schedule 01.02.2019    source источник


Ответы (1)


Это потому, что html-контент динамически изменяется javascript. Данные получены с этого URL: https://www.orbitxch.com/customer/api/event-updates?eventIds=29108154,29106937,29096310,29096315,29106936,29096313,29096309,29096306,291070823,289.,29106488,29106934,29106830,29106490,29104420, но, честно говоря, я не знаю, где вы можете найти эти идентификаторы. Этот URL-адрес возвращает ответ JSON, который вы можете легко проанализировать с помощью библиотеки Python.

person Matej    schedule 01.02.2019
comment
Спасибо. Как вы нашли URL-адрес, с которого он пришел? Так что лучше всего было бы разобрать этот JSON или есть более простой способ? - person Clipper; 01.02.2019
comment
@Clipper Я нашел это, используя инструменты разработки Firefox, в частности сетевую статистику (в Chrome тоже есть эти инструменты). Разбор JSON будет самым простым способом, у вас есть библиотека Python для этого, но идентификаторы в URL-адресе могут измениться, вам нужно выяснить, где код javascript находит эти идентификаторы. - person Matej; 01.02.2019
comment
Вы также можете рассмотреть возможность использования Requests-HTML, который позволяет загружать всю страницу, а затем анализировать ее, какая библиотека http нет. - person 0xInfection; 03.02.2019
comment
@InfectedDrake Это очень хороший момент, я не знал об этой библиотеке. Возможно, я буду использовать эту библиотеку когда-нибудь в будущем, но я все же предпочитаю делать запросы на исправление сайта, который содержит нужные данные. - person Matej; 03.02.2019