我正在把头撞到墙上。我已经成功地解析了这个页面上的大多数表格没有问题,但是<div>
标签让我很困惑。
Page = https://www.hockey-reference.com/teams/TBL/2018.html
这样:
table_div = soup.find('div', {'class': 'table_wrapper setup_long long
setup_commented commented', 'id': 'all_stats_adv_rs'})
获取我正在寻找的div标签,我想我可以拉出桌子:
using table_body = table_div.find('tbody')
但是什么都没有,我真的不知道为什么。如果我做一个简单的事情:
for row in table_div:
if 'tbody' in row:
print ("Found")
我得到了“发现”,所以它显然存在,所以为什么不能.find找到那个文本?
上面的过程适用于其他每个表,为什么不用这个呢?我甚至尝试过寻找TR ......就像table_div
不是找到期待的东西。
我讨厌寻求帮助,但我真的很茫然。帮助我看看我错过了什么。
答案 0 :(得分:2)
您正在寻找的表格放在html评论<!-- -->
中。 Comment
对象是一种NavigableString
,因此您无法使用.find
或任何其他Tag
方法。
但是,您可以选择注释并从中构建新的BeautifulSoup
对象。
from bs4 import Comment
table_div = soup.find('div', {'class':'table_wrapper', 'id':'all_stats_adv_rs'})
comment = table_div.find(string=lambda text:isinstance(text, Comment))
soup2 = BeautifulSoup(comment, 'html.parser')
print(soup2.find('tbody'))