如何通过API获取维基百科页面浏览量?求推荐适用于Python的相关API
获取维基百科页面浏览量的API及Python实现方法
嘿,刚好对这个问题熟得很!想获取维基百科页面的浏览量,不管是单天数据还是总浏览量,其实有挺方便的官方API和Python工具可用,我给你慢慢捋清楚:
维基官方的浏览量API
维基媒体提供了Pageviews API(属于Wikimedia REST API的一部分),专门用来查询页面的浏览统计数据。你可以通过它获取指定时间段内的每日浏览量,再累加得到总浏览量——这是最直接的官方途径,数据权威可靠。
这个API支持按项目(比如英文维基、中文维基)、页面标题、访问类型(桌面/移动端)、时间段等维度筛选数据,完全能满足你获取总浏览量的需求。
Python 专属的便捷工具
如果你不想自己写繁琐的HTTP请求和数据处理代码,Python生态里有现成的库可以用:
- mwviews:这是专门为维基百科浏览量查询打造的库,封装了Pageviews API的逻辑,用起来特别省心。
- 当然你也可以直接用
requests库调用官方API,灵活性更高,适合需要自定义参数的场景。
具体代码示例
方法1:用mwviews库快速实现
首先安装库:
pip install mwviews
然后写代码:
from mwviews.api import PageviewsClient from datetime import datetime # 初始化客户端,必须设置User-Agent(维基API要求,不然会被拒绝) pv_client = PageviewsClient(user_agent="MyWikiStatsApp/1.0 (myemail@example.com)") # 指定要查询的页面(这里以中文维基的"Python"页面为例) page_title = "Python" wiki_project = "zh.wikipedia" # 设置时间段:从2007年(维基开始记录浏览量的年份)到今天 end_date = datetime.today().strftime("%Y%m%d") daily_views = pv_client.article_views(wiki_project, [page_title], start="20070101", end=end_date) # 累加每日浏览量得到总浏览量 total_views = 0 for day, views_data in daily_views.items(): total_views += views_data.get(page_title, 0) print(f"《{page_title}》页面总浏览量:{total_views}")
方法2:直接调用官方REST API(用requests库)
如果不想额外安装库,直接用requests也能实现:
import requests from datetime import datetime def get_total_wiki_views(page_title, wiki_lang="zh"): # 处理页面标题:空格替换为下划线(维基页面URL的格式要求) formatted_title = page_title.replace(" ", "_") end_date = datetime.today().strftime("%Y%m%d") # 构建API请求URL api_url = f"https://wikimedia.org/api/rest_v1/metrics/pageviews/per-article/{wiki_lang}.wiki/all-access/all-agents/{formatted_title}/daily/20070101/{end_date}" # 必须设置User-Agent headers = {"User-Agent": "MyWikiStatsApp/1.0 (myemail@example.com)"} response = requests.get(api_url, headers=headers) if response.status_code == 200: data = response.json() # 累加所有日期的浏览量 total_views = sum(item["views"] for item in data["items"]) return total_views else: print(f"请求失败,状态码:{response.status_code}") return None # 使用示例 total = get_total_wiki_views("Python") if total: print(f"页面总浏览量:{total}")
几个重要注意事项
- 必须设置User-Agent:维基的API要求所有请求都要包含有效的User-Agent(你的应用名称+联系方式),否则会直接拒绝你的请求,这是为了防止滥用。
- 页面标题格式:维基的页面URL里,空格是用下划线
_代替的,所以查询前最好先处理一下标题格式。 - 数据起始时间:维基的浏览量统计从2007年开始,更早的数据是无法获取的。
内容的提问来源于stack exchange,提问作者Random person




