我正在寻找一种可靠的方法来提取球队名称和市场赔率。鉴于上面的代码段,这将是
西布朗 曼城 28/1 6/1 1/8
我还应该提到,在给定的赛程 ID(位于“data-fixtureid”属性中)之后,我只需要球队名称和市场赔率。
我尝试了以下 xpath 表达式:
tree.xpath('//span[@class="ippg-Market_Truncator"]/following::div[@data-fixtureid="66705048"]//text()')
提取团队名称,但这没有产生所需的输出。
如果有人能指出我正确的方向,我将不胜感激。我不一定需要为此使用 xpath,但也可以使用例如 beautiful soup。
最佳答案
这个答案与 xpath 不同,因为我使用 find_all()
和 find()
函数来实现您想要的结果。
首先,我使用类名 podEventRow
查找您需要的所有行
其次,我循环遍历该列表并查找具有 ippg-Market_CompetitorName
类的团队名称,然后删除/替换不必要的空格。
第三,在同一个循环中,我使用类名 ippg-Market_Topic
查找市场赔率,然后循环遍历每个赔率以获取每个赔率中的文本。
podEventRow = soup.find_all('div', class_="podEventRow")
for row in podEventRow:
team_name = row.find('div', class_="ippg-Market_CompetitorName").get_text(strip=True).replace('\t\r\n', '')
market_odds_raw = row.find_all('div', class_="ippg-Market_Topic")
market_odds = ''
for odd in market_odds_raw:
market_odds += ' - ' + odd.get_text(strip=True).replace('\t\r\n', '')
print(team_name + market_odds)
PS:我使用 selenium 来获取完整的页面源代码,因为该网站使用 JavaScript 来加载表格。
关于python - 使用 xpath/beautiful soup 提取一个又一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46330916/