【发布时间】:2019-09-30 19:11:43
【问题描述】:
这是我正在编写的用于抓取网站数据的部分代码。
page = 'https://www.pro-football-reference.com/boxscores/200409090nwe.htm'
sub_data = requests.get(page).text
sub_soup = bs4.BeautifulSoup(sub_data, "html.parser")
for toss in sub_soup.findAll('table', {'class':'suppress_all sortable stats_table now_sortable'}):
print(toss)
即使那行代码不正确,我也尝试了更通用的代码来尝试定位我正在寻找的数据
for toss in sub_soup.findAll('td', {'class':'center'}):
print(toss)
我正在尝试从“游戏信息”表中提取一行文字(谁赢得了投掷 - “Won Toss”) - 在这种情况下,答案应该是“爱国者”。由于某种原因,sub_soup 中缺少游戏信息表的整个 HTML 部分。我也尝试使用不同的解析器,比如html5lib。 sub_soup 中存在一个引用的部分(您可以通过检查站点中的行来查看),但不是 HTML 格式。此部分缺少在网站上看到的实际 HTML 代码等。有人可以帮忙吗?
【问题讨论】:
-
该页面似乎使用 ajax 异步加载页面。您可能需要像 selenium 这样的浏览器自动化工具来加载整个页面
-
@G.Anderson 好的,我会研究如何实现它。出于好奇,您是如何发现它使用 Ajax 的?
-
第一次加载该页面时,实际上会弹出一个灰色框,上面写着“请稍候,正在加载数据”或类似的内容
标签: python html beautifulsoup