使用BeautifulSoup从表中选择特定值

时间:2017-08-30 15:04:02

标签: python beautifulsoup

我已经搜索了类似的问题并给了它一些思考,但我是python的新手,似乎无法解决这个问题。我正在尝试从此页面上的播放器表格中抓取数据:

http://www.rotoworld.com/teams/depth-charts/mlb.aspx

每个条目(播放器)的HTML都是例如:

<td><b>3B</b></td><td>1. <a href='/player/mlb/6242/manny-machado'>Manny Machado</a></td>

所以我可以运行

players=soup.select('td > a')

获取所有玩家的列表。但是我想只选择一个特定位置的玩家,即所有3B,SS等等。这个位置只是另一个文本字符串,我似乎无法区分它。有没有人知道我可以从哪里开始呢?

编辑:当然,如果相同的位置始终位于相同的行中,这将很简单,例如1B总是排2-3行,但从表中可以看出情况并非如此。

1 个答案:

答案 0 :(得分:0)

您可以遍历数据行并检查兄弟姐妹:

for row in soup.findAll('tr'):
    cell = row.findNext('td')
    if cell.text == '3B':
        print(cell.next_sibling.find('a'))

将输出:

<a href="/player/mlb/6242/manny-machado">Manny Machado</a>