Использование Beautiful Soup для разбора Edabit - Python - PullRequest
0 голосов
/ 26 апреля 2020

Я пытаюсь написать код, чтобы получить количество XP, полученное путем выполнения задач Edabit путем анализа индивидуального URL-адреса, связанного с пользователем на сайте. Вот что у меня есть:

from bs4 import BeautifulSoup
import requests
url = "https://edabit.com/user/xHRGAqa56TcXTLEMW"
req = requests.get(url)
soup = BeautifulSoup(req.content, 'html.parser')
div = soup.find(id="react-root")
print(div)

Находка возвращает значение none, но я действительно не знаю почему. Я думаю, что сайт был сделан с метеором, и это может вызвать проблемы?

Любая помощь очень ценится.

Ответы [ 2 ]

1 голос
/ 26 апреля 2020

Это происходит, когда на веб-сайте есть динамическое содержимое c, которое затем загружается при выполнении javascript в браузере.

Вы можете посмотреть на источник вашей веб-страницы в браузере, чтобы увидеть, есть ли тег там или нет.

Поскольку ваш скрипт не браузер, а просто программа, которая загружает веб-страницу с веб-сайта, поэтому содержание не отображается в вашем сценарии.

Если вы хотите, чтобы javascript выполнялся в скрипте, вы можете настроить что-то вроде splash server.

Другим способом будет проверка сетевых запросов javascript делает в вашем браузере загрузку этого контента (который обычно является запросом API) и делает те же самые запросы, чтобы получить контент из API напрямую, а не сканировать его из браузера.

Надеюсь, что это помогает.

0 голосов
/ 26 апреля 2020

нет вывода означает, что soup.find не соответствует ни одному идентификатору, который вы искали. Проверьте файл html еще раз правильно. Это может сработать.

...