You need to enable JavaScript to run this app. 使用BeautifulSoup爬取Fanduel赛事赔率无法定位可见数值的问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

使用BeautifulSoup爬取Fanduel赛事赔率无法定位可见数值的问题咨询

Fanduel盘口数据定位方法
  • 你用普通requests+BeautifulSoup抓不到数据是正常的,Fanduel页面采用客户端渲染,初始HTML仅包含页面框架,所有赛事盘口数据都是页面加载完成后通过接口请求注入的,不会出现在初始返回的源码里。
  • 你在JSON接口里找不到对应赔率数值,核心原因是Fanduel的赔率字段不会直接存储页面显示的明码:
    • 棒球让分盘对应的字段为runLine,和让分数值分开存储
    • 美国赔率会做偏移换算:部分接口返回的是十进制赔率,需要转换为美国赔率格式才能和页面对应,转换公式为:十进制赔率≥2时,美国赔率=(十进制赔率-1)*100;十进制赔率<2时,美国赔率=-100/(十进制赔率-1),四舍五入后就是页面显示的整数值。
  • 快速定位对应请求的方法:打开浏览器开发者工具的「网络」面板,直接在面板顶部的搜索框输入你在页面看到的目标数值(比如你提到的-146),工具会自动筛选出所有返回内容包含该数值的请求,直接点进去就能看到对应的JSON字段路径,不需要逐个排查接口。
  • 如果不想研究接口规则,可以直接用浏览器自动化工具(Selenium/Playwright)模拟页面加载完成后,直接提取元素的显示文本,适配性更高,示例代码如下:
from playwright.sync_api import sync_playwright

# 需提前安装playwright并执行playwright install安装浏览器
with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    page = browser.new_page(user_agent="替换为你自己浏览器的UA值")
    page.goto("赛事页面地址", timeout=60000)
    # 等待盘口元素加载完成
    page.wait_for_selector('[data-testid*="run-line"]', timeout=30000)
    # 提取让分盘所有数值
    run_line_items = page.locator('[data-testid*="run-line"]').all_inner_texts()
    print(run_line_items)
    browser.close()
  • 请求时需要注意Fanduel有严格的反爬校验,需要携带完整的请求头、Cookie,控制请求频率,否则会触发人机验证导致返回数据为空。

内容的提问来源于stack exchange,提问作者dfried

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 14:54:05