Python BeautifulSoup找不到表ID

时间:2017-06-08 00:16:07

标签: python html beautifulsoup

我在使用BeautifulSoup刮桌子时遇到了麻烦。这是我的代码

from urllib.request import urlopen
from bs4 import BeautifulSoup

site = "http://www.sports-reference.com/cbb/schools/clemson/2014.html"
page = urlopen(site)
soup = BeautifulSoup(page,"html.parser")

stats = soup.find('table',  id = 'totals')

In [78]: print(stats)
None

当我右键单击表格以检查元素时,HTML看起来像我期望的那样,但是当我查看源代码时,唯一具有id ='totals'的元素被注释掉了。有没有办法从注释的源代码中删除一个表?

我引用了this post但似乎无法复制他们的解决方案。

这是我感兴趣的link to the webpage。我想刮掉标有“Totals”的表并将其存储为数据框。

我对Python,HTML和网络抓取相对较新。任何帮助将不胜感激。

提前致谢。

迈克尔

2 个答案:

答案 0 :(得分:1)

注释是BeautifulSoup中的字符串实例。您可以将BeautifulSoup的find方法与正则表达式一起使用,以查找您之后的特定字符串。一旦你有了这个字符串,就让BeautifulSoup解析那个你去的地方。

换句话说,

import re
from urllib.request import urlopen
from bs4 import BeautifulSoup

site = "http://www.sports-reference.com/cbb/schools/clemson/2014.html"
page = urlopen(site)
soup = BeautifulSoup(page,"html.parser")

stats_html = soup.find(string=re.compile('id="totals"'))
stats_soup = BeautifulSoup(stats_html, "html.parser")

print(stats_soup.table.caption.text)

答案 1 :(得分:0)

你可以这样做:

from urllib2 import *
from bs4 import BeautifulSoup

site = "http://www.sports-reference.com/cbb/schools/clemson/2014.html"
page = urlopen(site)
soup = BeautifulSoup(page,"lxml")

stats = soup.findAll('div', id = 'all_totals')
print stats

如果我帮忙,请告诉我!