我正在尝试从网站抓取赔率数据。为了使事情保持简单,这是我目前所处的位置
我成功地连接并检索了页面内容,因此我将省略前面的步骤以直接指向
[...]
page_response = requests.get(page_link, timeout=5)
# parse html
page_content = BeautifulSoup(page_response.content, "html.parser")
rows = []
rows_list = page_content.find_all('tr')
(仅显示第一行,只是为了保持简洁)
rows_list[1]
返回此
<tr><td class="h-text-left"><a class="in-match" href="/soccer/algeria/ligue-1/constantine-mo-bejaia/84nzpMc0/"><span><strong>Constantine</strong></span> - <span>MO Bejaia</span></a></td><td class="h-text-center"><a href="/soccer/algeria/ligue-1/constantine-mo-bejaia/84nzpMc0/">1:0</a></td><td class="table-main__odds colored"><span><span><span data-odd="1.73"></span></span></span></td><td class="table-main__odds" data-odd="3.18"></td><td class="table-main__odds" data-odd="4.75"></td><td class="h-text-right h-text-no-wrap">27.01.</td></tr>
选择标签
row = rows_list[1].find_all('td')
row
返回
[<td class="h-text-left"><a class="in-match" href="/soccer/algeria/ligue-1/constantine-mo-bejaia/84nzpMc0/"><span><strong>Constantine</strong></span> - <span>MO Bejaia</span></a></td>,
<td class="h-text-center"><a href="/soccer/algeria/ligue-1/constantine-mo-bejaia/84nzpMc0/">1:0</a></td>,
<td class="table-main__odds colored"><span><span><span data-odd="1.73"></span></span></span></td>,
<td class="table-main__odds" data-odd="3.18"></td>,
<td class="table-main__odds" data-odd="4.75"></td>,
<td class="h-text-right h-text-no-wrap">27.01.</td>]
我需要的数据在这里,并且对于具有“文本”属性的所有行都易于检索
row[0].text
'Constantine - MO Bejaia'
row[1].text
'1:0'
但是对于其他这些行,我不知道如何获取“ data-odd”的值
row[2]
<td class="table-main__odds colored"><span><span><span data-odd="1.73"></span></span></span></td>
row[3]
<td class="table-main__odds" data-odd="3.18"></td>
row[4]
<td class="table-main__odds" data-odd="4.75"></td>
分别为1.73、3.18和4.75
感谢您的时间
答案 0 :(得分:1)
在您的问题中,您可以像row['your index']['yourtag']
这样得到>
row[3]['data-odd']
row[4]['data-odd']
我知道您的row[2]
的{{1}}在span标签中。这样就可以得到范围,然后像这样解析data-odd
:
data-odd
答案 1 :(得分:0)
这些东西称为标记属性。如果我的记忆很好,则可以通过以下操作获取特定行的 data-odd 值:
row[2]['data-odd']
1.73
答案 2 :(得分:0)
它的工作方式类似于dict
。您可以使用
row[x].get('key')
或
row[x]['key']