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

爬取Pinnacle.com的NBA赛事链接失败,求技术解决方案

问题原因分析
  • 动态内容渲染:Pinnacle的NBA比赛数据是通过JavaScript动态加载的,requests只能获取到页面的静态骨架HTML,里面没有实际的比赛链接和内容,自然找不到<a>标签。
  • 反爬机制拦截:Pinnacle有严格的反爬策略,会检测请求的合法性:
    • 缺少真实的请求头(比如User-Agent)会被判定为爬虫,返回空内容或错误页面;
    • 直接使用Selenium可能会被识别出自动化工具特征(如webdriver属性),导致页面无法正常加载;
  • URL锚点无效:原URL中的#period:0:spread是前端路由参数,服务器返回的基础页面不会根据这个锚点直接返回对应内容,需要前端JS解析后再请求数据接口。
解决办法

针对Pinnacle的特性,推荐优化Selenium的使用方式,规避反爬并等待动态内容加载:

步骤1:配置Selenium规避检测

使用ChromeOptions隐藏自动化特征,模拟真实浏览器请求:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 配置Chrome选项
options = Options()
options.add_argument("--disable-blink-features=AutomationControlled")  # 禁用自动化检测
options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36")  # 设置真实UA
options.add_argument("--start-maximized")  # 最大化窗口模拟真实操作

# 初始化浏览器
driver = webdriver.Chrome(options=options)

步骤2:等待页面加载并提取链接

使用WebDriverWait等待比赛元素加载完成,再提取对应链接:

try:
    # 访问目标页面
    url = 'https://www.pinnacle.com/en/basketball/nba/matchups/#period:0:spread'
    driver.get(url)
    
    # 等待比赛链接元素加载(根据页面实际元素调整选择器,这里示例用比赛卡片的a标签)
    wait = WebDriverWait(driver, 10)
    game_links = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "a[href*='/en/basketball/nba/matchups/']")))
    
    # 提取并打印链接
    urls = []
    for link in game_links:
        href = link.get_attribute('href')
        if href not in urls:
            urls.append(href)
            print(href)
finally:
    # 关闭浏览器
    driver.quit()

额外注意事项

  • 若仍被拦截,可尝试添加随机延迟(time.sleep(random.uniform(1,3))),模拟人工操作间隔;
  • 避免频繁请求,防止IP被封禁;
  • 定期检查页面元素选择器,网站更新后可能需要调整CSS选择器或XPath。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 04:46:21