我正在使用 BeautifulSoup 从表中提取数据。此表列出了转入/转出子组负责人下的球员,所有这些人都分组在指定他们要去的足球队的“组负责人”下。我想遍历每个团队,然后遍历每个子头(转入/转出),以便我可以根据球员是否在转入或转出中列出来指定组头(团队)为传入或传出团队. 这是html:
<tr class="group-head">
<th colspan="4"><h3><a href="/teams/england/arsenal-fc/">Arsenal</a></h3></th>
</tr>
<tr class="subgroup-head">
<th colspan="4">Transfers in (€25.5M)</th>
</tr>
<tr class="odd">
<td class="date"><span class='timestamp' data-value='1341093600' data- format='mm/dd/yy'>07/01/12</span></td>
<td class="player"><span class="flag_16 left_16 france_16_left"></span>O. Giroud</td>
<td class="team">Montpellier</td>
<td class="type">€ 12M</td>
</tr>
我会遍历 subgroup-head 类来获取数据,但是 tr 标签以每个子组结尾,所以我无法查看标签下面的数据。我试图得到的输出是一个具有这种格式的字典:
{玩家:[致团队、来自团队、价格、日期]}
我如何抓取html?
更新:
我开始了一个循环来遍历兄弟姐妹,因为每个兄弟姐妹都被两个连续的隔开,尽管它仍然有问题。有没有更简单的方法?我想确保它不会捕获团队或其他子组:
teams = table.findAll('tr', {'group-head'})
inout = table.findAll('tr', {'subgroup-head'})
for team in teams:
for direction in inout:
details = direction.next_sibling.next_sibling
print details.text.encode('utf-8')
while details.next_sibling.next_sibling:
if details.next_sibling.next_sibling not in inout:
if details.next_sibling.next_sibling not in teams:
print 'NEXT ONE'
details = details.next_sibling.next_sibling
print details.text.encode('utf-8')
else:
break
它似乎不想超越一线队,并且添加额外的休息时间不起作用。