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

如何爬取pregame.com游戏中心的大学橄榄球对阵完整表格数据

爬取失败原因
  • 目标网站的大学橄榄球对阵数据属于客户端动态渲染内容,静态HTML源码中没有加载完成的表格数据,浏览器会在页面加载完成后单独请求接口获取数据再渲染到页面上,因此直接用requests拉取静态页再解析无法拿到目标内容
  • 原代码存在两处语法错误:请求头字典格式错误,key和值需要拆分书写;requests.get不需要传入第二个参数'r'
解决方案

方案1:调用后端数据接口(优先选择,效率更高)

打开浏览器F12开发者工具,切换到「网络」面板,刷新页面后筛选XHR/Fetch类型的请求,可直接找到返回对阵数据的后端接口,该接口返回结构化的JSON数据,直接请求接口即可拿到完整数据,无需解析HTML元素。

方案2:模拟浏览器渲染(无需找接口,易上手)

使用Playwright模拟真实浏览器访问页面,等待页面所有资源加载完成后再拿源码解析,可直接拿到渲染完成的所有元素,实现代码如下:

# 先安装依赖:pip install playwright  再执行 playwright install chromium 安装浏览器内核
from playwright.sync_api import sync_playwright
from bs4 import BeautifulSoup

with sync_playwright() as p:
    # 启动无头模式浏览器
    browser = p.chromium.launch(headless=True)
    # 设置请求头
    page = browser.new_page(user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36")
    # 访问目标页面,等待网络空闲后再继续
    page.goto("https://pregame.com/game-center/?d=1636174800000&t=0&l=2&a=0&s=AwayRot&m=false&b=undefined&o=Current&c=All&k=", wait_until="networkidle")
    # 获取渲染完成的页面源码
    full_page = page.content()
    browser.close()

# 解析渲染后的页面内容
soup = BeautifulSoup(full_page, 'lxml')
div = soup.find_all('p', class_ = 'pggc-col-data pggc-away')
print(div)
注意事项
  • 控制请求频率,避免触发网站反爬策略,可根据需求添加适当的等待时间
  • 如需爬取多批次不同筛选条件的数据,优先选择方案1抓接口,响应速度和稳定性远高于模拟浏览器方案

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:54:01