使用bs4 python进行抓取时,完整的HTML不会呈现

时间:2019-01-02 11:16:36

标签: python html web-scraping beautifulsoup

我正在尝试从geeksforgeeks抓取数据以进行自己的简单抓取和分析项目。

我正在使用bs4requests-python2

我需要在此网址上抓取所有问题,

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时!

在查看页面源代码时(出现所有问题的地方是problemFeed的Ctrl-F)

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

div为空!因此无法从中抓取任何数据!这怎么可能,因为我可以在控制台中查看此div中的所有内容,但不能在页面源代码中或在抓取过程中查看所有内容!

1 个答案:

答案 0 :(得分:0)

您可以通过发布请求从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)