我已经搜索了类似的问题并给了它一些思考,但我是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行,但从表中可以看出情况并非如此。
答案 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>