Полный HTML не рендерится при просмотре с использованием Python bs4 - PullRequest
0 голосов
/ 02 января 2019

Я пытаюсь очистить данные от geeksforgeeks для моего собственного простого проекта очистки и анализа.

Я использую bs4 и requests - python2

Мне нужно очистить всевопросы по этому URL, так что я делаю,

ques_page = requests.get('https://practice.geeksforgeeks.org/explore/?page=1')
ques_soup = BeautifulSoup(ques_page.text, 'lxml')
get_ques = ques_soup.find('div', class_="panel problem-block")

Класс panel problem-block содержит данные вопроса.

Но когда я просматриваю очищенную html - print(ques_page.text) не содержитdiv вообще!

При просмотре исходного кода страницы (Ctrl-F для problemFeed в этом разделе находятся все вопросы)

<div id="problemFeed" class="row" data-masonry-options='{"itemSelector": ".item" }'></div>

Это div ПУСТО!Таким образом, я не могу выскрести из него какие-либо данные!Как это возможно, так как я могу просматривать все внутри этого div в консоли, но не в исходном коде страницы или во время очистки!

1 Ответ

0 голосов
/ 02 января 2019

вы можете получить его из конечной точки Ajax с почтовым запросом

data = {'page': 1, 'query' : 'page1'} # 2, page2...
ques_page = requests.post('https://practice.geeksforgeeks.org/ajax/practicePageAjax.php', data=data)
ques_soup = BeautifulSoup(ques_page.text, 'lxml')
get_ques = ques_soup.find('div', class_="panel problem-block")
print(get_ques)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...