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

Python爬虫抓取英超官网历史赛季俱乐部列表动态加载问题求助

问题根因

你当前的延迟设置位置无效,核心原因是requests库仅能获取服务器返回的初始静态HTML资源,不会执行页面内嵌的JavaScript代码,也无法等待客户端侧的动态渲染流程。你把time.sleep放在requests.get之后,只是让程序空等10秒,实际解析的response.content还是请求返回的初始静态内容,自然只能拿到默认的当前赛季数据。


解决方案

方案1:使用支持动态渲染的爬虫工具(以Selenium为例)

Selenium可以驱动真实浏览器完成页面渲染,等待动态内容加载完成后再提取数据,调整后的代码如下:
首先安装依赖:

pip install selenium

修改后的函数代码:

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
from bs4 import BeautifulSoup

def clubList(url,yearCode):
    target_url = url + "/clubs" + yearCode
    # 配置浏览器参数,添加--headless=new参数可启用无头模式,不弹出浏览器窗口
    chrome_options = webdriver.ChromeOptions()
    # chrome_options.add_argument('--headless=new')
    driver = webdriver.Chrome(options=chrome_options)
    driver.get(target_url)
    # 显式等待:最多等10秒,直到目标俱乐部列表容器加载完成,比强制sleep效率更高
    try:
        WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.CLASS_NAME, "dataContainer"))
        )
    except:
        driver.quit()
        return []
    # 获取渲染完成后的完整页面源码
    content = driver.page_source
    driver.quit()
    
    soup = BeautifulSoup(content, "html.parser")
    cluburl = []
    ul = soup.find_all(
        "ul",
        attrs={
            "class": "block-list-5 block-list-3-m block-list-1-s block-list-1-xs block-list-padding dataContainer"
        },
    )
    u = str(ul)
    soup2 = BeautifulSoup(u, "html.parser")
    for i, tags in enumerate(soup2.find_all("a")):
        cluburl.append(url + str(tags.get("href")))
    for i in range(0, len(cluburl)):
        cluburl[i] = cluburl[i].replace("overview", "squad")
    return cluburl

方案2:直接调用后端数据接口(效率更高)

页面动态加载的赛季数据本质是调用后端接口获取的,你可以通过浏览器F12开发者工具的「网络」面板,切换赛季时筛选XHR/Fetch请求,找到返回俱乐部列表数据的接口,直接用requests请求该接口并传入se赛季参数即可,无需渲染页面,也不用设置延迟,直接解析返回的JSON数据提取俱乐部链接即可。


内容的提问来源于stack exchange,提问作者Manish A G

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:06:04