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

Selenium无法获取更新的AJAX内容,英超特定页面表格爬取异常

这个问题我碰到过好多次——英超官网的动态内容加载经常因为Cookie弹窗、异步渲染的原因,导致你带的筛选参数(赛季se=42、俱乐部cl=2)没生效,最后抓了默认的全赛季全俱乐部数据。给你几个关键的解决步骤和修正后的代码:

解决思路与修正代码

1. 先处理隐私政策弹窗

英超官网会强制弹出Cookie同意框,如果不处理,页面的筛选逻辑可能被阻塞,参数自然不会生效。你需要先定位并点击同意按钮。

2. 显式等待动态表格加载

表格是通过JavaScript异步渲染的,直接获取元素会拿到初始的默认表格。用WebDriverWait等待目标表格的条目加载完成后再抓取,才能拿到筛选后的内容。

3. 验证当前页面URL

有时候网站可能因为缓存或跳转丢失参数,先确认浏览器加载的URL是否和你传入的一致,避免白忙活。

修正后的完整代码

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

# 初始化Chrome浏览器(记得配置好ChromeDriver路径)
driver = webdriver.Chrome()
target_url = "https://www.premierleague.com/stats/top/players/red_card?se=42&cl=2"
driver.get(target_url)

try:
    # 处理Cookie同意弹窗(按钮文本可能随官网更新调整,需用开发者工具确认)
    accept_cookie_btn = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.XPATH, "//button[contains(text(), 'Accept All Cookies')]"))
    )
    accept_cookie_btn.click()

    # 确认URL参数没有丢失,避免重定向导致筛选失效
    assert driver.current_url == target_url, "URL参数丢失,页面可能发生了重定向"

    # 等待筛选后的表格条目加载完成(定位tbody下的行元素)
    table_rows = WebDriverWait(driver, 15).until(
        EC.presence_of_all_elements_located((By.CSS_SELECTOR, "table.statsTable tbody tr"))
    )

    # 遍历抓取你需要的表格数据(选择器需根据实际DOM结构调整)
    for row in table_rows:
        player_name = row.find_element(By.CSS_SELECTOR, "td.playerName a").text
        red_card_count = row.find_element(By.CSS_SELECTOR, "td.mainStat").text
        print(f"球员: {player_name}, 红牌数: {red_card_count}")

finally:
    # 无论成功失败,最后关闭浏览器
    driver.quit()

额外注意事项

  • 如果Cookie按钮的定位器失效,打开Chrome开发者工具重新确认按钮的XPATH或CSS选择器;
  • 如果还是无法获取正确数据,可在处理Cookie后添加driver.refresh(),强制页面重新加载带参数的内容;
  • 若遇到网站检测Selenium的情况,可添加反检测配置:
options = webdriver.ChromeOptions()
options.add_argument("--headless=new")  # 无头模式可选
options.add_argument("--disable-blink-features=AutomationControlled")
driver = webdriver.Chrome(options=options)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:08:46