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

如何用Python脚本获取维基百科页面侧边栏表格数据?

解决维基百科API无法获取侧边栏表格的问题

你用prop=extracts拿不到侧边栏表格的原因很明确:这个API参数默认只返回页面的正文提取内容,那些右侧的信息框表格(也就是你说的"Ford Fusion""First generation""Second generation"这类表格)不在extracts的返回范围内。

下面给你两种可行的修改方案:

方案1:获取完整解析后的页面HTML

通过prop=revisions参数获取页面完整的解析后HTML,这样就能包含所有表格元素。构造请求时需要加上rvprop=content和rvparse参数,让API返回渲染好的HTML内容。

示例代码:

import requests
from bs4 import BeautifulSoup

api_url = "https://en.wikipedia.org/w/api.php"
request_params = {
    "action": "query",
    "format": "json",
    "titles": "Ford Fusion (Americas)",
    "prop": "revisions",
    "rvprop": "content",
    "rvparse": ""
}

response = requests.get(api_url, params=request_params)
response_data = response.json()
# 提取页面的HTML内容
page_html = next(iter(response_data['query']['pages'].values()))['revisions'][0]['*']

# 解析HTML找侧边栏表格(这类表格通常带infobox类)
soup = BeautifulSoup(page_html, 'html.parser')
infobox_tables = soup.find_all('table', class_='infobox')
print(f"找到{len(infobox_tables)}个侧边栏表格")

方案2:直接获取结构化的信息框数据

维基百科API提供了prop=infoboxes参数,可以直接返回信息框的结构化数据,不需要手动解析HTML,效率更高。

示例代码:

import requests

api_url = "https://en.wikipedia.org/w/api.php"
request_params = {
    "action": "query",
    "format": "json",
    "titles": "Ford Fusion (Americas)",
    "prop": "infoboxes"
}

response = requests.get(api_url, params=request_params)
response_data = response.json()
page_info = next(iter(response_data['query']['pages'].values()))
infoboxes = page_info.get('infoboxes', [])

# 遍历输出每个信息框的内容
for idx, infobox in enumerate(infoboxes):
    print(f"--- 第{idx+1}个信息框:{infobox['name']} ---")
    for field_name, field_value in infobox['data'].items():
        print(f"{field_name}: {field_value['value']}")

两种方案对比:

  • 方案1适合需要保留HTML结构、做进一步页面元素分析的场景;
  • 方案2直接拿到结构化数据,适合只需要提取表格内容的场景,代码更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 21:49:56