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

Python requests.get请求网站未返回全部元素 无法获取目标赛程数据

问题原因
  • 你要爬取的网站内容是客户端JavaScript动态渲染生成的,requests.get()只能拿到服务器返回的原始静态HTML文本,此时动态内容还没被渲染出来,所以自然匹配不到目标dtr-data类的span元素。
可行解决方案

方案1:抓包获取后端数据接口

打开浏览器开发者工具的「网络」标签,刷新页面后筛选XHR/fetch请求,找到网站加载赛程数据的后端接口,直接请求接口拿JSON格式数据,这个方式效率最高。示例逻辑如下:

import requests

# 替换为你抓包拿到的实际赛程数据接口地址
api_url = "对应数据接口地址"
headers = {
    "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"
}
res = requests.get(api_url, headers=headers)
# 接口返回JSON格式,直接解析即可拿到所有赛程数据
fixture_data = res.json()

方案2:使用支持渲染JS的爬取工具

如果找不到对应接口,可以用Selenium、Playwright这类模拟浏览器运行的工具,等页面JS渲染完成后再提取元素,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

driver = webdriver.Chrome()
driver.get("http://www.fplstatistics.co.uk/")
# 等待目标元素加载完成,最长等待10秒
wait = WebDriverWait(driver, 10)
allFixtures = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "span.dtr-data")))
print(allFixtures.text)
driver.quit()

额外注意:发起请求时建议携带User-Agent请求头模拟正常浏览器访问,避免被网站的反爬策略拦截返回异常响应内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:24:03