python - 使用 xpath/beautiful soup 提取一个又一个元素

标签 python xpath beautifulsoup

enter image description here

我正在寻找一种可靠的方法来提取球队名称和市场赔率。鉴于上面的代码段,这将是

西布朗 曼城 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/

相关文章:

python - 简单 python 服务器的问题。即使在我(据说)关闭套接字之后,socket.accept() 仍接受 input/favicon.ico

python - 如何有效地将 html 列表解析为字典?

python - Beautifulsoup 打印相同的类名不同的出现

python - 如何修复Python中的 "' str'对象不支持项目分配?

python - 如何使用urllib抓取 'this' url?

python - SeLU 激活函数 x 参数导致类型错误

python - 如何使用 BeautifulSoup 找到评论标签 <!--...-->?

python - 提取具有不规则模式的数据 - Python Xpath

python - 在列表中查找节点的编号(位置)

python - 使用 Python + lxml (xpath) 从网站抓取/提取文本并打印