Python BeautifulSoup Web Scrape在Div标签内

时间:2018-01-11 04:17:00

标签: web-scraping python-3.6

我正在把头撞到墙上。我已经成功地解析了这个页面上的大多数表格没有问题,但是<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不是找到期待的东西。

我讨厌寻求帮助,但我真的很茫然。帮助我看看我错过了什么。

1 个答案:

答案 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'))