You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python和Selenium抓取博彩公司赔率数据的代码问题求助

使用Python和Selenium抓取博彩公司赔率数据的代码问题求助

看起来你在抓取博彩赔率数据时遇到了元素定位和数据结构的问题,我来帮你梳理下问题所在,然后给出可行的解决方案~

首先说下你代码里的核心错误:body.find_elements()返回的是WebElement对象的列表,所以body_raws最终是一个「列表的列表」(每个元素对应某一个table body下的所有行元素)。如果你直接循环body_raws里的元素,拿到的是一整组行元素的列表,而不是单个WebElement,自然会报错「列表没有text属性」。

要得到你想要的三层列表结构,我们可以分层次遍历元素,一步步解析数据:

修正后的代码示例

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
# 替换成你的目标网页URL
driver.get("目标网页地址")

# 存储最终的三层列表数据
final_data = []

# 获取所有表格主体(每个主体对应一个盘口的所有博彩公司数据)
tables_bodies = driver.find_elements(By.CSS_SELECTOR, "div.ui-table__body")

for body in tables_bodies:
    # 当前盘口下的所有博彩公司数据列表
    current_handicap_group = []
    # 获取当前主体下的每一行(每行对应一个博彩公司的赔率)
    bookmaker_rows = body.find_elements(By.CSS_SELECTOR, "div.ui-table__row")
    
    for row in bookmaker_rows:
        # 方式1:直接拆分整行文本(需根据页面实际文本格式调整)
        row_content = row.text.strip().split()
        # 假设行文本格式为「Bet365 2.5 - -」,对应你需要的结构
        if len(row_content) >= 4:
            bookmaker = row_content[0]
            handicap = row_content[1]
            odd1 = row_content[2]
            odd2 = row_content[3]
            current_handicap_group.append([bookmaker, handicap, odd1, odd2])
        
        # 方式2(更可靠):定位每个子元素单独取文本(推荐)
        # 如果页面每行的各字段都在独立子元素里,比如:
        # bookmaker = row.find_element(By.CSS_SELECTOR, "div.ui-table__cell--bookmaker").text
        # handicap = row.find_element(By.CSS_SELECTOR, "div.ui-table__cell--handicap").text
        # odd1 = row.find_element(By.CSS_SELECTOR, "div.ui-table__cell--odd1").text
        # odd2 = row.find_element(By.CSS_SELECTOR, "div.ui-table__cell--odd2").text
        # current_handicap_group.append([bookmaker, handicap, odd1, odd2])
    
    # 确保当前盘口有数据再加入最终列表
    if current_handicap_group:
        final_data.append(current_handicap_group)

# 打印结果验证
for group in final_data:
    print(group)

driver.quit()

额外建议:优化数据存储结构

你提到可能有更好的信息存储方式,其实用字典列表会比纯三层列表可读性更强,后续处理数据也更方便,比如:

current_handicap_group.append({
    "bookmaker": bookmaker,
    "handicap": handicap,
    "odd1": odd1,
    "odd2": odd2
})

备注:内容来源于stack exchange,提问作者Gabrielek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 07:13:34