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

如何提取维基百科术语表所有子页面的累计或年度页面浏览量

实现方法

完全可以通过Python实现,核心逻辑分为两步:提取目标页面的有效内链、调用官方API获取浏览量统计数据,全程不需要依赖第三方付费工具,也不用复杂的权限申请。

  • 提取目标页内有效维基链接
    用requests库请求目标术语表页面的HTML内容,再用BeautifulSoup解析DOM结构,筛选出指向维基百科正文页面的链接,过滤掉锚点链接、外部链接、特殊功能页(如帮助页、讨论页、分类页)等无关内容,整理得到需要统计的所有页面标题列表。
  • 调用官方API获取浏览量数据
    直接调用维基媒体公开的Pageviews API即可获取对应页面的浏览量数据,接口无请求密钥要求,普通匿名访问就能正常调用。你可以根据需要指定统计的时间范围:要累计总浏览量就拉取对应页面从上线到当前的全量数据求和,要年度最高值就按自然年分组统计后取最大值即可,接口支持直接按聚合粒度返回结果,不需要你自己处理日度、月度的细粒度数据。

示例极简代码参考:

import requests
from bs4 import BeautifulSoup
from collections import defaultdict
import time

# 1. 提取目标页内的有效页面链接
target_url = "你要爬取的术语表页面地址"
resp = requests.get(target_url)
soup = BeautifulSoup(resp.text, "html.parser")
page_titles = []
for a_tag in soup.select("div.mw-parser-output a[href^='/wiki/']"):
    href = a_tag["href"]
    # 过滤非正文页面,可根据需求调整规则
    if any(x in href for x in [":", "#", "Help:", "Category:", "Template:", "Talk:"]):
        continue
    page_title = href.split("/wiki/")[-1]
    if page_title not in page_titles:
        page_titles.append(page_title)

# 2. 批量获取浏览量统计数据
api_base = "wikimedia API请求前缀按官方规则拼接即可"
total_views = {}
year_max_views = {}
for title in page_titles:
    # 加延时避免触发接口频率限制
    time.sleep(0.3)
    resp = requests.get(api_base.format(title))
    if resp.status_code != 200:
        continue
    data = resp.json()["items"]
    # 统计累计总浏览量
    total = sum(item["views"] for item in data)
    total_views[title] = total
    # 统计年度最高浏览量
    year_count = defaultdict(int)
    for item in data:
        year = item["timestamp"][:4]
        year_count[year] += item["views"]
    year_max_views[title] = max(year_count.values()) if year_count else 0

注:上述代码的过滤规则、统计时间范围都可以根据你的实际需求自行调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:36:03