我目前正在尝试使用Python 3.6中的requests和BeautifulSoup模块进行练习,但遇到了一个问题,在其他问题和答案中似乎找不到任何信息。
似乎在页面的某个地方,Beautiful Soup停止识别标签和ID。我正在尝试从这样的页面提取Play-by-play数据:
http://www.pro-football-reference.com/boxscores/201609080den.htm
import requests, bs4
source_url = 'http://www.pro-football-reference.com/boxscores/201609080den.htm'
res = requests.get(source_url)
if '404' in res.url:
raise Exception('No data found for this link: '+source_url)
soup = bs4.BeautifulSoup(res.text,'html.parser')
#this works
all_pbp = soup.findAll('div', {'id' : 'all_pbp'})
print(len(all_pbp))
#this doesn't
table = soup.findAll('table', {'id' : 'pbp'})
print(len(table))
使用Chrome中的检查器,我可以看到表格确实存在。我也尝试在HTML后半部分的“div”和“tr”上使用它,但似乎不起作用。我已经尝试了标准的“html.parser”,以及lxml和html5lib,但什么都没用。
我在这里做错了什么,还是HTML或其格式中有些东西阻止了BeautifulSoup正确地找到这些后续标记?我遇到过类似页面由这家公司运行(hockey-reference.com,basketball-reference.com)的问题,但已经能够在其他网站上正确使用这些工具。
如果是HTML的问题,那么有没有更好的工具/库来帮助提取这些信息呢?
谢谢您的帮助, BF
table = soup.findAll('table', {'id' : 'pbp'})
并不是“不工作”,它只是找不到id = pbp
的div
元素。 - Dmitriy Fialkovskiy