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

如何从CGI网站抓取表格数据并转换为DataFrame?

解决CGI页面网球数据抓取问题

问题说明

需要从指定CGI页面抓取网球数据,使用Jupyter Notebook的Python库,尝试给定代码后无法获取有效表格,得到的结果是无效空数据和导航栏内容。

问题原因

原代码直接获取页面所有<table>标签后取索引为1的表格,但该索引对应的并非目标数据表格;同时请求头的User-Agent过于简单,可能导致页面返回内容不全。

解决代码

import requests
from bs4 import BeautifulSoup
import pandas as pd

# 使用贴近真实浏览器的User-Agent
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"
}
url = "https://www.tennisabstract.com/cgi-bin/leaders.cgi"

# 发送请求并检查状态
response = requests.get(url, headers=headers)
response.raise_for_status()

# 解析页面,精准定位目标数据表格
soup = BeautifulSoup(response.text, "lxml")
target_table = soup.find("table", class_="stats")

# 转换表格为DataFrame并显示
df = pd.read_html(str(target_table))[0]
pd.set_option('display.max_rows', None)
df

关键调整说明

  • 替换为真实浏览器的User-Agent,确保服务器返回完整页面内容;
  • 通过class_="stats"精准定位存储网球数据的目标表格,避免解析无效表格;
  • 加入response.raise_for_status(),快速排查请求失败类问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 07:16:14