使用BeautifulSoup解析html无法找到表格

时间:2017-03-12 21:43:06

标签: python html beautifulsoup

我正在尝试解析此网站中的数据: http://www.baseball-reference.com/boxes/CHN/CHN201606020.shtml

我想提取表格中的一些数据。但出于某种原因,我正在努力寻找它们。例如,我想要做的就是这个

from bs4 import BeautifulSoup
import requests

url = 'http://www.baseball-reference.com/boxes/CHN/CHN201606020.shtml'
soup = BeautifulSoup(requests.get(url).text)
soup.find('table', id='ChicagoCubsbatting')

尽管html中存在id,但最后一行没有返回任何内容。此外,即使页面中有许多表,len(soup.findAll('table'))也会返回1。我尝试过使用' lxml' html.parser'和' html5lib'。一切都表现得一样。

发生了什么事?为什么这不起作用,我该怎么做才能提取表格呢?

1 个答案:

答案 0 :(得分:1)

使用soup.find('div', class_='placeholder').next_sibling.next_sibling获取评论文字,然后使用这些文字构建新的soup

In [35]: new_soup = BeautifulSoup(text, 'lxml')

In [36]: new_soup.table
Out[36]: 
<table class="teams poptip" data-tip="San Francisco Giants at Atlanta Braves">
<tbody>
<tr class="winner">
<td><a href="/teams/SFG/2016.shtml">SFG</a></td>
<td class="right">6</td>
<td class="right gamelink">
<a href="/boxes/ATL/ATL201606020.shtml">Final</a>
</td>
</tr>
<tr class="loser">
<td><a href="/teams/ATL/2016.shtml">ATL</a></td>
<td class="right">0</td>
<td class="right">
</td>
</tr>
</tbody>
</table