乘风破浪,遇见最美Windows 11之现代Windows桌面应用开发 - 通过MediaWiki API对接海外版维基百科(Wikipedia)

背景

https://zh.wikipedia.org

image

维基百科(Wikipedia,聆听i/ˌwɪkɪˈpiːdi.ə/或聆听i/ˌwɪkiˈpiːdi.ə/)是一个自由内容、公开编辑且多语言的网络百科全书协作计划,通过Wiki技术使得包括您在内的所有人都可以简单地使用网页浏览器修改其中的内容。维基百科的名称取自于本网站核心技术“Wiki”以及具有百科全书之意的“encyclopedia”共同创造出来的新混成词“Wikipedia”,当前维基百科由维基媒体基金会负责运营。

image

维基百科主要是由来自互联网上的志愿者共同合作编写而成,任何使用网络进入维基百科的用户都可以编写和修改里面的文章,但是在一些情况下为了避免扰乱或者破坏可能会限制编辑功能。我们可以自由选择使用匿名、化名或者直接用真实身份来编辑维基百科。与传统的百科全书相比,在互联网上运作的维基百科其文字和绝大部分图片使用知识共享署名-相同方式共享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节点

根节点

https://www.mediawiki.org/wiki/API:Main_page

所有的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会返回消息,例如等待$host中:延迟$lag秒。

smaxage参数

类型:整数,默认值0

设置s-maxage HTTP缓存控制头至这些秒。错误不会缓存。

maxage参数

类型:整数,默认值0

设置max-age HTTP缓存控制头至这些秒。错误不会缓存。

assert参数

如果设置为user就验证用户已登录;如果设置为anon就验证用户未登录;如果设置为bot就验证是否有机器人用户权限。

以下值中的一个:anonbotuser

assertuser参数

验证当前用户是命名用户。

类型:通过用户名方式指定的用户。

requestid参数

任何在此提供的值将包含在响应中。可以用以区别请求。

servedby参数

类型:Boolean

包含保存结果请求的主机名。

curtimestamp参数

类型:Boolean

在结果中包括当前时间戳。

responselanginfo参数

类型:Boolean

包含在结果中用于uselangerrorlang的语言。

origin参数

使用跨域AJAX请求(CORS)访问API时,请将其设置为原始域。这必须包括在任何pre-flight请求中,因此必须是请求URI(而不是POST正文)的一部分。

对于已验证的请求,这必须正确匹配Origin标头中的原点之一,因此必须将其设置为类似https://zh.wikipedia.orghttps://meta.wikimedia.org 的东西。如果此参数不匹配Origin页顶,就返回403错误响应。如果此参数与Origin标头不匹配,将返回403响应。如果此参数与Origin标头匹配并且允许来源,则将设置Access-Control-Allow-OriginAccess-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

用于警告和错误文本输出的格式。

以下值中的一个:bchtmlnoneplaintextrawwikitext

参数 描述
plaintext 包括HTML标签的wikitext被移除并且实体被替换。
wikitext 未解析的wikitext。
html HTML。
raw 消息的键和参数。
none 没有文本输出,仅有错误代码。
bc MediaWiki 1.29之前使用的格式。errorlang和errorsuselocal会被忽略。

errorlang参数

默认值:uselang

用于警告和错误的语言。action=query&meta=siteinfosiprop=languages返回语言代码的列表,或指定content以使用此wiki的内容语言,或指定uselang以使用与uselang参数相同的值。

errorsuselocal参数

类型:Boolean

如果指定,错误文本将使用来自MediaWiki命名空间的本地自定义消息。

centralauthtoken参数

当使用跨域名AJAX请求(CORS)访问API时,使用它以认证为当前的SUL用户。在进行CORS请求前,在此wiki使用action=centralauthtoken以检索令牌。每个令牌只可以使用一次,并在10秒后过期。这应包含在任何预先请求中,并因此应包含在请求URI中(而不是在POST正文中)。

权限

writeapi

使用写入API

授予:alluserbot

apihighlimits

在API查询中使用更高的上限(慢查询:500;快查询:5000)。慢查询的限制也适用于多值参数。

授予:botsysop

查询动作(query)

列举所有分类(list=allcategories, ac)

https://zh.wikipedia.org/w/api.php?action=help&modules=query%2Ballcategories

参数清单:

参数 说明
acfrom 要作为枚举起始点的类别。
accontinue 当更多结果可用时,使用这个继续。
acto 要作为枚举终止点的类别。
acprefix 搜索所有以此值开头的分类标题。
acdir 排序方向。
以下值中的一个:ascendingdescending
默认: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

image

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 使用者

image

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 要执行的搜索类型。
以下值中的一个:nearmatchtexttitle
srinfo 要返回的元数据。
值:rewrittenquerysuggestiontotalhits
srprop 要返回的属性。
size添加页面大小,单位为字节
wordcount添加页面的字数
timestamp添加页面上次编辑时的时间戳
snippet添加页面片段,并突出标记查询词
titlesnippet添加页面标题,并突出标记查询词
redirecttitle添加匹配的重定向的标题
redirectsnippet添加匹配的重定向标题,并突出标记查询词
sectiontitle添加匹配章节的标题
sectionsnippet添加匹配的章节标题,并突出标记查询词
isfilematch添加布尔值,表明搜索是否匹配文件内容
categorysnippet添加匹配的分类名称,并突出标记查询词
extensiondata添加由扩展生成的额外数据
srinterwiki 搜索结果中包含跨wiki结果,如果可用
类型:布尔型
srenablerewrites 启用内部查询重写。一些搜索后端可以重写查询到另一个被认为能提供更好结果的位置,例如纠正拼写错误
类型:布尔型
srsort 设置返回结果的排序
以下值中的一个:create_timestamp_asccreate_timestamp_descincoming_links_ascincoming_links_descjust_matchlast_edit_asclast_edit_descnonerandomrelevanceuser_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

image

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"
            }
        ]
    }
}

实践实战

https://github.com/TaylorShi/HelloWikipedia

参考

posted @ 2022-08-17 14:47  TaylorShi  阅读(373)  评论(0编辑  收藏  举报