乘风破浪,遇见最美Windows 11之现代Windows桌面应用开发 - 通过MediaWiki API对接海外版维基百科(Wikipedia)
背景
维基百科(Wikipedia,聆听i/ˌwɪkɪˈpiːdi.ə/或聆听i/ˌwɪkiˈpiːdi.ə/)是一个自由内容、公开编辑且多语言的网络百科全书协作计划,通过Wiki技术使得包括您在内的所有人都可以简单地使用网页浏览器修改其中的内容。维基百科的名称取自于本网站核心技术“Wiki”以及具有百科全书之意的“encyclopedia”共同创造出来的新混成词“Wikipedia”,当前维基百科由维基媒体基金会负责运营。
维基百科主要是由来自互联网上的志愿者共同合作编写而成,任何使用网络进入维基百科的用户都可以编写和修改里面的文章,但是在一些情况下为了避免扰乱或者破坏可能会限制编辑功能。我们可以自由选择使用匿名、化名或者直接用真实身份来编辑维基百科。与传统的百科全书相比,在互联网上运作的维基百科其文字和绝大部分图片使用知识共享署名-相同方式共享3.0协议和GNU自由文件许可协议来提供每个人自由且免费的信息,任何人都可以成为条目的作者,以及在遵守协议并标示来源后直接复制、使用以及发布这些内容。
Wiki
Wiki是一种在网络上开放且可供多人协同创作的超文本系统。Wiki站点可以由多人维护,不同人可以对同一个主题进行拓展和探讨。
MediaWiki
MediaWiki是一个免费、开放的Wiki引擎,很多著名的wiki网站都采用这套系统。
Wikipedia
我们常说的维基百科,一般是指Wikipedia,它是基于MediaWiki的一个网络百科全书。
但要理解的是,除了Wikipedia,还有很多别的Wiki站点。从这个角度考虑的话,维基(Wiki)也有可能是指别的网站,不过Wikipedia太出名了,以至于很多人直接将Wikipedia等同于Wiki。
对接Wikipedia
因为Wikipedia是一个基于MediaWiki的Wiki系统,所有对接这种类型的网站可以按MediaWiki API的标准来对接就行了。
MediaWiki节点
根节点
所有的MediaWiki都具有如下结构的根节点:
https://www.example.org/w/api.php
比如:
API Endpoint | Wiki |
---|---|
https://www.mediawiki.org/w/api.php | MediaWiki API |
https://meta.wikimedia.org/w/api.php | Meta-Wiki API |
https://en.wikipedia.org/w/api.php | English Wikipedia API |
https://nl.wikipedia.org/w/api.php | Dutch Wikipedia API |
https://commons.wikimedia.org/w/api.php | Wikimedia Commons API |
https://test.wikipedia.org/w/api.php | Test Wiki API |
这个估计是按语言来的,以中文为例,它的调用地址根域名为:
https://zh.wikipedia.org
拼接API地址之后:
https://zh.wikipedia.org/w/api.php
其他语言应该可以举一反三。
语言和节点清单
词条条目数量排名前70的语言和节点信息。
语言描述 | 当地语言 | 节点 |
---|---|---|
英语 | English |
https://en.wikipedia.org/w/api.php |
宿务语 | Sinugboanong Binisaya |
https://ceb.wikipedia.org/w/api.php |
德语 | Deutsch |
https://de.wikipedia.org/w/api.php |
瑞典语 | Svenska |
https://sv.wikipedia.org/w/api.php |
法语 | Français |
https://fr.wikipedia.org/w/api.php |
荷兰语 | Nederlands |
https://nl.wikipedia.org/w/api.php |
俄语 | Русский |
https://ru.wikipedia.org/w/api.php |
西班牙语 | Español |
https://es.wikipedia.org/w/api.php |
意大利语 | Italiano |
https://it.wikipedia.org/w/api.php |
埃及阿拉伯语 | مصرى (Maṣrī) |
https://arz.wikipedia.org/w/api.php |
波兰语 | Polski |
https://pl.wikipedia.org/w/api.php |
日语 | 日本語 |
https://ja.wikipedia.org/w/api.php |
中文 | 汉语 |
https://zh.wikipedia.org/w/api.php |
越南语 | Tiếng Việt |
https://vi.wikipedia.org/w/api.php |
瓦瑞语 | Winaray |
https://war.wikipedia.org/w/api.php |
阿拉伯语 | العربية |
https://ar.wikipedia.org/w/api.php |
乌克兰语 | Українська |
https://uk.wikipedia.org/w/api.php |
葡萄牙语 | Português |
https://pt.wikipedia.org/w/api.php |
波斯语 | فارسی |
https://fa.wikipedia.org/w/api.php |
加泰罗尼亚语 | Català |
https://ca.wikipedia.org/w/api.php |
塞尔维亚语 | Српски / Srpski |
https://sr.wikipedia.org/w/api.php |
印尼语 | Bahasa Indonesia |
https://id.wikipedia.org/w/api.php |
朝鲜语 | 한국어 |
https://ko.wikipedia.org/w/api.php |
书面挪威语 | Norsk (Bokmål) |
https://no.wikipedia.org/w/api.php |
芬兰语 | Suomi |
https://fi.wikipedia.org/w/api.php |
匈牙利语 | Magyar |
https://hu.wikipedia.org/w/api.php |
捷克语 | Čeština |
https://cs.wikipedia.org/w/api.php |
塞尔维亚-克罗地亚语 | Srpskohrvatski / Српскохрватски |
https://sh.wikipedia.org/w/api.php |
车臣语 | Нохчийн |
https://ce.wikipedia.org/w/api.php |
闽南语 | Bân-lâm-gú |
https://zh-min-nan.wikipedia.org/w/api.php |
土耳其语 | Türkçe |
https://tr.wikipedia.org/w/api.php |
罗马尼亚语 | Română |
https://ro.wikipedia.org/w/api.php |
巴斯克语 | Euskara |
https://eu.wikipedia.org/w/api.php |
马来语 | Bahasa Melayu |
https://ms.wikipedia.org/w/api.php |
鞑靼语 | Tatarça / Татарча |
https://tt.wikipedia.org/w/api.php |
世界语 | Esperanto |
https://eo.wikipedia.org/w/api.php |
希伯来语 | עברית |
https://he.wikipedia.org/w/api.php |
亚美尼亚语 | Հայերեն |
https://hy.wikipedia.org/w/api.php |
保加利亚语 | Български |
https://bg.wikipedia.org/w/api.php |
丹麦语 | Dansk |
https://da.wikipedia.org/w/api.php |
南阿塞拜疆语 | تۆرکجه |
https://azb.wikipedia.org/w/api.php |
斯洛伐克语 | Slovenčina |
https://sk.wikipedia.org/w/api.php |
哈萨克语 | Қазақша |
https://kk.wikipedia.org/w/api.php |
米南佳保语 | Minangkabau |
https://min.wikipedia.org/w/api.php |
爱沙尼亚语 | Eesti |
https://et.wikipedia.org/w/api.php |
克罗地亚语 | Hrvatski |
https://hr.wikipedia.org/w/api.php |
白俄罗斯语 | Беларуская |
https://be.wikipedia.org/w/api.php |
立陶宛语 | Lietuvių |
https://lt.wikipedia.org/w/api.php |
希腊语 | Ελληνικά |
https://el.wikipedia.org/w/api.php |
简单英语 | Simple English |
https://simple.wikipedia.org/w/api.php |
阿塞拜疆语 | Azərbaycanca |
https://az.wikipedia.org/w/api.php |
加利西亚语 | Galego |
https://gl.wikipedia.org/w/api.php |
斯洛文尼亚语 | Slovenščina |
https://sl.wikipedia.org/w/api.php |
乌尔都语 | اردو |
https://ur.wikipedia.org/w/api.php |
新挪威语 | Nynorsk |
https://nn.wikipedia.org/w/api.php |
格鲁吉亚语 | ქართული |
https://ka.wikipedia.org/w/api.php |
印地语 | हिन्दी |
https://hi.wikipedia.org/w/api.php |
泰米尔语 | தமிழ் |
https://ta.wikipedia.org/w/api.php |
泰语 | ไทย |
https://th.wikipedia.org/w/api.php |
乌孜别克语 | O‘zbek |
https://uz.wikipedia.org/w/api.php |
拉丁语 | Latina |
https://la.wikipedia.org/w/api.php |
威尔士语 | Cymraeg |
https://cy.wikipedia.org/w/api.php |
阿斯图里亚斯语 | Asturianu |
https://ast.wikipedia.org/w/api.php |
沃拉普克语 | Volapük |
https://vo.wikipedia.org/w/api.php |
粤语 | 粤语 |
https://zh-yue.wikipedia.org/w/api.php |
马其顿语 | Македонски |
https://mk.wikipedia.org/w/api.php |
拉脱维亚语 | Latviešu |
https://lv.wikipedia.org/w/api.php |
孟加拉语 | বাংলা |
https://bn.wikipedia.org/w/api.php |
塔吉克语 | Тоҷикӣ |
https://tg.wikipedia.org/w/api.php |
缅甸语 | မြန်မာဘာသာ |
https://my.wikipedia.org/w/api.php |
MediaWiki参数
Action参数
执行操作,默认值
help
参数 | 描述 |
---|---|
abusefiltercheckmatch |
检查以查看防滥用过滤器是否匹配某个变量集、某次编辑或某条日志记载的过滤器活动。 |
abusefilterchecksyntax |
检查一个防滥用过滤器的语法。 |
abusefilterevalexpression |
对防滥用过滤器表达式求值。 |
abusefilterunblockautopromote |
从由于防滥用过滤器的结果而接受的autopromotions解封用户。 |
abuselogprivatedetails |
显示一个AbuseLog入口的私有信息。 |
antispoof |
检查用户名是否触犯AntiSpoof的常规检查。 |
block |
封禁一位用户。 |
centralauthtoken |
取得centralauthtoken用于已认证的一个附加到wiki的请求。 |
centralnoticecdncacheupdatebanner |
在请求的横幅及语言中,请求为匿名用户刷新在CDN(前端)存储的横幅缓存。 |
centralnoticechoicedata |
对于指定项目和语言,获取选择一个横幅需要的数据。 |
centralnoticequerycampaign |
获取一则通过的所有配置设置。 |
changeauthenticationdata |
更改当前用户的身份验证数据。 |
changecontentmodel |
变更页面的内容模型。 |
checktoken |
从action=query&meta=tokens检查令牌有效性。 |
cirrus-config-dump |
CirrusSearch配置的转储。 |
cirrus-mapping-dump |
用于此wiki的CirrusSearch映射转储。 |
cirrus-profiles-dump |
此Wiki上的CirrusSearch配置文件转储。 |
cirrus-settings-dump |
用于此wiki的CirrusSearch设置转储。 |
clearhasmsg |
清除当前用户的hasmsg标记。 |
clientlogin |
使用交互式流登录wiki。 |
compare |
获取两页面之间的差异。 |
createaccount |
创建一个新用户账号。 |
createlocalaccount |
强行创建本地账号。 |
cxdelete |
删除一个用翻译扩展创建的翻译草稿。 |
cxsuggestionlist |
管理建议列表。添加建议至列表并移除它们。 |
cxtoken |
获取JWT令牌以通过cxserver的身份验证。 |
delete |
删除一个页面。 |
deleteglobalaccount |
删除一个全域用户。 |
echomarkread |
对当前用户标记通知为已读。 |
echomarkseen |
对当前用户标记通知为已读。 |
echomute |
将来自某些用户或页面的通知静音或取消静音。 |
edit |
创建和编辑页面。 |
editmassmessagelist |
编辑大量信息递送列表。 |
emailuser |
电子邮件联系一位用户。 |
expandtemplates |
展开wikitext中的所有模板。 |
fancycaptchareload |
获得一个新的FancyCaptcha。 |
featuredfeed |
返回特色内容源。 |
feedcontributions |
返回用户贡献纲要。 |
feedrecentchanges |
返回最近更改的摘要。 |
feedwatchlist |
返回监视列表纲要。 |
filerevert |
回退一个文件至某一旧版本。 |
flow |
允许对结构化讨论页面的操作。 |
flow-parsoid-utils |
在wikitext和HTML之间互相转换文本。 |
flowthank |
为一条Flow评论公开发送感谢通知。 |
globalblock |
全域封禁或解封一位用户。 |
globalpreferenceoverrides |
为当前用户的全域参数设置更改本地覆盖。 |
globalpreferences |
更改当前用户的全域参数设置。 |
globaluserrights |
将一位用户添加至全域用户组,或将其从组中移除。 |
graph |
访问图表标签功能。 |
growthmanagementorlist |
Manage information in the structured mentor list(usually stored in MediaWiki:GrowthMentors.json). This module can be used by both current and future mentors(to add themselves or change their details) and administrators(for all users). |
growthmentordashboardupdatedata |
安排导师面板中学员总览的特别更新。由于性能原因您每两个小时只能安排一次更新。 |
growthsetmenteestatus |
設定學員的狀態(允許學員啟用/停用導師計畫模組或完全退出以刪除學員和導師的關係)。 |
growthsetmentor |
设置用户的导师。该变更将被公开记录。 |
growthsetmentorstatus |
设置目前用户的导师状态为活跃/离开。 |
growthstarmentee |
由目前用户将学员标记或取消标记星号(私密存储且不记录)。 |
help |
显示指定模块的帮助。 |
homepagequestionstore |
获取通过主页模块发布,并且已格式化的问题。 |
imagerotate |
此模块已禁用。 |
import |
从其他wiki,或从XML文件导入页面。 |
jsonconfig |
允许直接访问JsonConfig子系统。 |
languagesearch |
使用任何字母搜索语言名称。 |
linkaccount |
将来自第三方提供商的账号链接至当前用户。 |
login |
登录并获取身份验证cookie。 |
logout |
退出并清除会话数据。 |
managetags |
执行有关更改标签的管理任务。 |
massmessage |
发送一条信息到列出的多个页面。 |
mergehistory |
合并页面历史。 |
move |
移动一个页面。 |
opensearch |
使用开放搜索协议搜索wiki。 |
options |
更改当前用户的参数设置。 |
paraminfo |
获得关于API模块的信息。 |
parse |
解析内容并返回解析器输出。 |
patrol |
巡查页面或修订版本。 |
protect |
更改页面的保护等级。 |
purge |
为指定标题刷新缓存。 |
query |
取得来自并有关MediaWiki的数据。 |
removeauthenticationdata |
从当前用户移除身份验证数据。 |
resetpassword |
向用户发送密码重置邮件。 |
revisiondelete |
删除和恢复修订版本。 |
rollback |
撤销对页面的最近编辑。 |
rsd |
导出一个RSD(Really Simple Discovery)架构。 |
setglobalaccountstatus |
设置全域用户状态。 |
setnotificationtimestamp |
更新监视页面的通知时间戳。 |
setpagelanguage |
更改页面的语言。 |
shortenurl |
将一个长URL缩短。 |
sitematrix |
获取维基媒体网站列表。 |
spamblacklist |
验证一个或多个URL是否属于垃圾链接阻止列表。 |
streamconfigs |
公开事件流配置。仅返回format=json且formatversion=2。 |
strikevote |
允许管理员作废或取消作废投票。 |
tag |
从个别修订或日志记录中添加或移除更改标签。 |
templatedata |
获取由模板数据扩展存储的数据。 |
thank |
向一名编辑者发送感谢通知。 |
titleblacklist |
验证一个页面的标题、文件名或用户名是否触发标题黑名单。 |
transcodereset |
持有“transcode-reset”权限的用户可以重置并重启转码任务。 |
unblock |
解封一位用户。 |
undelete |
取消删除页面的修订版本。 |
unlinkaccount |
从当前用户移除已链接的第三方账号。 |
upload |
上传文件,或获取正在等待中的上传的状态。 |
userrights |
更改一位用户的组成员。 |
validatepassword |
验证密码是否符合wiki的密码方针。 |
watch |
从当前用户的监视列表中添加或移除页面。 |
webapp-manifest |
返回webapp证明。 |
webauthn |
API模块,用于在注册/身份验证过程中在服务器和客户端之间进行通信。 |
wikilove |
给另一用户维基有爱。 |
bouncehandler |
内部的。接收退回的电子邮件并处理它以处理失败的容器。 |
categorytree |
内部的。用于CategoryTree扩展的内部模块。 |
cspreport |
内部的。由浏览器使用以报告违反内容安全方针的内容。此模块应永不使用,除了在被CSP兼容的浏览器自动使用时。 |
cxpublish |
内部的。保存用内容翻译扩展创建的页面。 |
cxpublishsection |
内部的。保存使用内容翻译扩展的章节翻译功能创建的页面。 |
cxsave |
内部的。此模块允许保存按章节的草稿翻译以节省带宽,并收集平行的语料库。 |
discussiontoolscompare |
内部的。Get information about comment changes between two page revisions. |
discussiontoolsedit |
内部的。在讨论页面上发布消息。 |
discussiontoolsgetsubscriptions |
内部的。获取所提供话题的订阅状态。 |
discussiontoolspageinfo |
内部的。返回初始化讨论工具所需的元数据。 |
discussiontoolspreview |
内部的。Preview a message on a discussion page. |
discussiontoolssubscribe |
内部的。订阅(或取消订阅)以接收(或不接收)有关话题的通知。 |
echopushsubscriptions |
内部的。管理当前用户的推送订阅。 |
growthinvalidateimagerecommendation |
内部的。作廢圖片推薦任務。 |
helppanelquestionposter |
内部的。为当前用户处理通过帮助面板发布的问题。 |
jsondata |
内部的。取得本地化JSON数据。 |
oathvalidate |
内部的。验证一个双因素验证(OATH)令牌。 |
readinglists |
内部的。阅读列表写入操作。 |
record-lint |
内部的。在数据库中记录lint错误。 |
sanitize-mapdata |
内部的。为Kartographer扩展执行数据验证。 |
scribunto-console |
内部的。从Scribunto控制台提供XHR请求的内部模块。 |
stashedit |
内部的。在分享缓存中准备编辑。 |
sxsave |
内部的。Save the draft section translation and store the parallel corpora。 |
timedtext |
内部的。提供被音轨元素所使用的字幕。 |
ulslocalization |
内部的。获取指定语言的ULS本地化。 |
ulssetlang |
内部的。更新用户的首选界面语言。 |
visualeditor |
内部的。从Parsoid服务返回页面的HTML5。 |
visualeditoredit |
内部的。保存一个HTML5页面至MediaWiki(通过Parsoid服务转换为wikitext)。 |
format参数
输出格式,默认值
jsonfm
参数 | 描述 |
---|---|
json |
输出数据为JSON格式。 |
jsonfm |
输出数据为JSON格式(使用HTML格式显示)。 |
none |
不输出任何东西。 |
php |
输出数据为序列化PHP格式。 |
phpfm |
输出数据为序列化PHP格式(使用HTML格式显示)。 |
rawfm |
输出数据为JSON格式,包含调试元素(使用HTML格式显示)。 |
xml |
输出数据为XML格式。 |
xmlfm |
输出数据为XML格式(使用HTML格式显示)。 |
maxlag参数
类型:整数
最大延迟可被用于MediaWiki安装于数据库复制集中。要保存导致更多网站复制延迟的操作,此参数可使客户端等待直到复制延迟少于指定值时。万一发生过多延迟,错误代码maxlag会返回消息,例如等待
smaxage参数
类型:整数,默认值0
设置s-maxage
HTTP缓存控制头至这些秒。错误不会缓存。
maxage参数
类型:整数,默认值0
设置max-age
HTTP缓存控制头至这些秒。错误不会缓存。
assert参数
如果设置为user就验证用户已登录;如果设置为anon就验证用户未登录;如果设置为bot就验证是否有机器人用户权限。
以下值中的一个:anon
、bot
、user
assertuser参数
验证当前用户是命名用户。
类型:通过用户名方式指定的用户。
requestid参数
任何在此提供的值将包含在响应中。可以用以区别请求。
servedby参数
类型:Boolean
包含保存结果请求的主机名。
curtimestamp参数
类型:Boolean
在结果中包括当前时间戳。
responselanginfo参数
类型:Boolean
包含在结果中用于uselang
和errorlang
的语言。
origin参数
使用跨域AJAX请求(CORS)访问API时,请将其设置为原始域。这必须包括在任何pre-flight请求中,因此必须是请求URI(而不是POST正文)的一部分。
对于已验证的请求,这必须正确匹配Origin标头中的原点之一,因此必须将其设置为类似https://zh.wikipedia.org 或https://meta.wikimedia.org 的东西。如果此参数不匹配Origin页顶,就返回403错误响应。如果此参数与Origin标头不匹配,将返回403响应。如果此参数与Origin标头匹配并且允许来源,则将设置Access-Control-Allow-Origin
和Access-Control-Allow-Credentials
开头。
对于未验证的请求,会指定值*
。这将导致Access-Control-Allow-Origin
标头被设置,但Access-Control-Allow-Credentials
将为false
,且所有用户特定数据将受限制。
uselang参数
默认值:user
用于消息翻译的语言。action=query&meta=siteinfo与siprop=languages
可返回语言代码列表,或指定user以使用当前用户的语言设置,或指定content以使用此wiki的内容语言。
variant参数
语言变种。仅当基础语言支持变种转换时起作用。
errorformat参数
默认值:bc
用于警告和错误文本输出的格式。
以下值中的一个:bc
、html
、none
、plaintext
、raw
、wikitext
参数 | 描述 |
---|---|
plaintext |
包括HTML标签的wikitext被移除并且实体被替换。 |
wikitext |
未解析的wikitext。 |
html |
HTML。 |
raw |
消息的键和参数。 |
none |
没有文本输出,仅有错误代码。 |
bc |
MediaWiki 1.29之前使用的格式。errorlang和errorsuselocal会被忽略。 |
errorlang参数
默认值:uselang
用于警告和错误的语言。action=query&meta=siteinfo
带siprop=languages
返回语言代码的列表,或指定content以使用此wiki的内容语言,或指定uselang以使用与uselang参数相同的值。
errorsuselocal参数
类型:Boolean
如果指定,错误文本将使用来自MediaWiki命名空间的本地自定义消息。
centralauthtoken参数
当使用跨域名AJAX请求(CORS)访问API时,使用它以认证为当前的SUL用户。在进行CORS请求前,在此wiki使用action=centralauthtoken
以检索令牌。每个令牌只可以使用一次,并在10秒后过期。这应包含在任何预先请求中,并因此应包含在请求URI中(而不是在POST正文中)。
权限
writeapi
使用写入API
授予:all
、user
和bot
apihighlimits
在API查询中使用更高的上限(慢查询:500;快查询:5000)。慢查询的限制也适用于多值参数。
授予:bot
和sysop
查询动作(query)
列举所有分类(list=allcategories, ac)
https://zh.wikipedia.org/w/api.php?action=help&modules=query%2Ballcategories
参数清单:
参数 | 说明 |
---|---|
acfrom |
要作为枚举起始点的类别。 |
accontinue |
当更多结果可用时,使用这个继续。 |
acto |
要作为枚举终止点的类别。 |
acprefix |
搜索所有以此值开头的分类标题。 |
acdir |
排序方向。 以下值中的一个: ascending 、descending 默认: ascending |
acmin |
只返回至少带这么多成员的分类。 类型:整数 |
acmax |
只返回最多带这么多成员的分类。 类型:整数 |
aclimit |
要返回多少个类别。 类型:整数或max 值必须介于1和500之间。 默认:10 |
acprop |
要获取的属性:size 在分类中添加页面数。hidden 标记由__HIDDENCAT__ 隐藏的分类。默认:(空) |
通过action=query&list=allcategories
可以列举所有的分类。aclimit
代表每次请求结果大小,默认值10,不能超过500。
https://zh.wikipedia.org/w/api.php?action=query&format=json&formatversion=2&list=allcategories&aclimit=10
action:query
format:json
formatversion:2
list:allcategories
aclimit:10
我们看看返回结果:
{
"batchcomplete": true,
"continue": {
"accontinue": "\"Bund\"_in_Latvia_politicians",
"continue": "-||"
},
"query": {
"allcategories": [
{
"category": "!!! album covers"
},
{
"category": "!!! albums"
},
{
"category": "!!! members"
}
]
}
}
如果还有下一页,这个continue
结构里面,就会有accontinue
值,下一页就可以带上让它来请求。
action:query
format:json
formatversion:2
list:allcategories
aclimit:3
accontinue:"Bund"_in_Latvia_politicians
{
"batchcomplete": true,
"continue": {
"accontinue": "\"Part_of_a_series_on\"_sidebar_templates",
"continue": "-||"
},
"query": {
"allcategories": [
{
"category": "\"Bund\" in Latvia politicians"
},
{
"category": "\"Country\" Johnny Mathis songs"
},
{
"category": "\"Islam in\" and \"Islamism in\" templates"
}
]
}
}
我们再不分页,直接请求2页的数据对比下,发现确实符合。
action:query
format:json
formatversion:2
list:allcategories
aclimit:6
{
"batchcomplete": true,
"continue": {
"accontinue": "\"Part_of_a_series_on\"_sidebar_templates",
"continue": "-||"
},
"query": {
"allcategories": [
{
"category": "!!! album covers"
},
{
"category": "!!! albums"
},
{
"category": "!!! members"
},
{
"category": "\"Bund\" in Latvia politicians"
},
{
"category": "\"Country\" Johnny Mathis songs"
},
{
"category": "\"Islam in\" and \"Islamism in\" templates"
}
]
}
}
在指定的分类中列出所有页面(list=categorymembers, cm)
通过action=query&list=categorymembers
可以查询指定分类下包含内容。其中分类名通过cmtitle
传入,并且以Category:
开头,追加分类名称。通过cmlimit
来控制分页大小,通过cmcontinue
来传递下一页。
https://zh.wikipedia.org/w/api.php?action=query&format=json&formatversion=2&list=categorymembers&cmlimit=10&cmtitle=Category:Cat-0 使用者
action:query
format:json
formatversion:2
list:categorymembers
cmlimit:10
cmtitle:Category:Cat-0 使用者
执行一次全文本搜索(list=search, sr)
https://zh.wikipedia.org/w/api.php?action=help&modules=query%2Bsearch
参数清单:
参数 | 说明 |
---|---|
srsearch |
搜索所有匹配此值的页面标题或内容。根据wiki的搜索后端工具,您可以使用搜索字符串以调用特殊搜索功能。 |
srnamespace |
只在这些命名空间搜索,要指定所有值,请使用* ,默认:0 。 |
srlimit |
返回的总计页面数。 类型:整数或max 值必须介于1和500之间 默认:10 |
sroffset |
当更多结果可用时,使用这个继续。 类型:整数 默认:0 |
srqiprofile |
查询要使用的独立描述(影响排序算法)。classic 基于传入链接、一些模板、页面语言和新近程度的排名(模板/语言/新近程度可能不会在此wiki激活)。classic_noboostlinks 基于一些模板、页面语言和新近程度的排名,当在此wiki激活时。empty 完全基于查询相关特性的排名(仅用于调试)。wsum_inclinks 基于传入链接的加权和wsum_inclinks_pv 基于传入链接及每周页面浏览的加权和popular_inclinks_pv 主要基于页面预览排名popular_inclinks 主要基于链入链接数排名mlr-1024rs 基于传入链接及每周页面浏览的加权和engine_autoselect 让搜索引擎决定使用的最佳个人资料默认: engine_autoselect |
srwhat |
要执行的搜索类型。 以下值中的一个: nearmatch 、text 、title |
srinfo |
要返回的元数据。 值: rewrittenquery 、suggestion 、totalhits |
srprop |
要返回的属性。 size添加页面大小,单位为字节 wordcount 添加页面的字数 timestamp 添加页面上次编辑时的时间戳 snippet 添加页面片段,并突出标记查询词 titlesnippet 添加页面标题,并突出标记查询词 redirecttitle 添加匹配的重定向的标题 redirectsnippet 添加匹配的重定向标题,并突出标记查询词 sectiontitle 添加匹配章节的标题 sectionsnippet 添加匹配的章节标题,并突出标记查询词 isfilematch 添加布尔值,表明搜索是否匹配文件内容 categorysnippet 添加匹配的分类名称,并突出标记查询词 extensiondata 添加由扩展生成的额外数据 |
srinterwiki |
搜索结果中包含跨wiki结果,如果可用 类型:布尔型 |
srenablerewrites |
启用内部查询重写。一些搜索后端可以重写查询到另一个被认为能提供更好结果的位置,例如纠正拼写错误 类型:布尔型 |
srsort |
设置返回结果的排序 以下值中的一个: create_timestamp_asc 、create_timestamp_desc 、incoming_links_asc 、incoming_links_desc 、just_match 、last_edit_asc 、last_edit_desc 、none 、random 、relevance 、user_random 默认: relevance |
https://zh.wikipedia.org/w/api.php?action=query&list=search&srsearch=海南省&format=json&errorformat=plaintext&srlimit=10&sroffset=2&srnamespace=%2A&srwhat=nearmatch&servedby=true&curtimestamp=true&requestid=Request+ID
action:query
list:search
srsearch:海南省
format:json
errorformat:plaintext
srlimit:10
sroffset:2
srnamespace:%2A
srwhat:nearmatch
servedby:true
curtimestamp:true
requestid:Request+ID
返回值
{
"batchcomplete": "",
"requestid": "Request ID",
"servedby": "mw1347",
"curtimestamp": "2022-08-22T09:26:25Z",
"query": {
"search": [
{
"ns": 0,
"title": "海南省",
"pageid": 421,
"size": 74452,
"wordcount": 2764,
"snippet": "",
"timestamp": "2022-08-22T00:48:44Z"
}
]
}
}
实践实战
参考
- 维基百科MediaWiki API解析
- 维基百科 MediaWiki API 解析
- API:Main page
- MediaWiki API help
- 维基百科:维基百科语言列表
- action=query
- list=search
- Wiki.Net
- Voltstro-Studios/Wiki.Net
- Genbox.Wikipedia
- Genbox/Wikipedia
- https://zh.m.wikipedia.org/?curid=421
- 百度百科有开放的API吗?
- 通过维基API实现维基百科查询功能
- 维基百科中文接口如何调用?
- https://en.m.wikipedia.org/?curid=33057
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2020-08-17 关于标记语言转换工具PanDoc在Windows10安装和使用