简介:本文全面解析维基百科MediaWiki API的核心功能、使用场景及实战技巧,涵盖API分类、参数配置、数据获取与处理,助力开发者高效调用维基百科数据。
维基百科作为全球最大的开源知识库,其背后的MediaWiki框架提供了强大的API接口,支持开发者以编程方式获取、修改和交互维基百科的内容。本文从MediaWiki API的基础概念出发,详细解析其核心功能、分类、使用场景及实战技巧,涵盖参数配置、数据获取、错误处理等关键环节,并结合代码示例说明如何高效调用API,为开发者提供从入门到进阶的完整指南。
MediaWiki是维基百科使用的开源Wiki软件,其API(Application Programming Interface)是连接开发者与维基百科数据的桥梁。通过API,开发者可以:
MediaWiki API的设计遵循RESTful原则,支持GET、POST等HTTP方法,返回数据格式包括JSON、XML和PHP序列化数据(默认)。其核心优势在于开放性(无需授权即可读取公开数据)和灵活性(支持复杂查询与批量操作)。
MediaWiki API按功能可分为五大类,每类包含多个模块:
action=query:最常用的模块,支持页面内容、元数据、修订历史等查询。
返回指定页面的最新修订内容及时间戳。
prop=revisions&rvprop=content|timestamp&titles=Python_(programming_language)
list=search实现全文搜索,或prop=links获取页面链接列表。action=parse:直接解析Wiki文本为HTML,适合需要渲染内容的场景。
text=Hello%20[[World]]&prop=text&format=json
action=edit:提交页面修改,需提供token(通过action=query&meta=tokens获取)。title:目标页面标题;text:新内容;summary:编辑摘要;basetimestamp:避免冲突的修订时间戳。
https://en.wikipedia.org/w/api.php?action=query&meta=tokens&format=json
https://en.wikipedia.org/w/api.php?action=edit&title=Test_Page&text=New_Content&token=...&format=json
action=info:获取页面基础信息(如长度、最后修改时间);action=siteinfo:查询站点配置(如支持的命名空间、API版本)。action=query&list=usercontribs:获取用户贡献列表;action=createaccount(需权限):创建新用户。action=rollback:快速回滚到指定修订;action=patrol:标记修订为已巡查(需权限)。titles参数一次获取多个页面数据,减少请求次数。
titles=Python|Java|C%2B%2B&prop=revisions&rvprop=content
continue参数处理大数据集(如搜索结果)。403 Forbidden:编辑权限不足或令牌过期;429 Too Many Requests:触发速率限制(默认每秒10次)。aiohttp或JavaScript的fetch实现并发调用。
import requestsdef get_page_content(title):url = "https://en.wikipedia.org/w/api.php"params = {"action": "query","prop": "revisions","rvprop": "content","titles": title,"format": "json"}response = requests.get(url, params=params)data = response.json()pages = data["query"]["pages"]page_id = next(iter(pages))return pages[page_id]["revisions"][0]["*"]print(get_page_content("Python_(programming_language)"))
def edit_page(title, new_content, edit_token):url = "https://en.wikipedia.org/w/api.php"data = {"action": "edit","title": title,"text": new_content,"token": edit_token,"format": "json"}response = requests.post(url, data=data)return response.json()# 先获取令牌token_response = requests.get("https://en.wikipedia.org/w/api.php", params={"action": "query","meta": "tokens","format": "json"})edit_token = token_response.json()["query"]["tokens"]["csrftoken"]# 提交编辑result = edit_page("Test_Page", "Updated Content", edit_token)print(result)
MediaWiki API为开发者提供了强大的工具,从简单的数据抓取到复杂的自动化编辑均可实现。未来,随着维基百科社区对API功能的持续扩展(如更细粒度的权限控制、实时数据流),其应用场景将进一步拓宽。开发者需关注官方文档更新,并遵循最佳实践以确保高效、合规的使用。
通过本文的解析,读者应能掌握MediaWiki API的核心用法,并能够根据实际需求设计解决方案。无论是构建知识图谱、监控内容变更,还是实现自动化编辑,MediaWiki API都是不可或缺的技术资源。