维基百科API响应中的参数是什么意思?

时间:2016-11-13 23:23:49

标签: mediawiki wikipedia wikipedia-api mediawiki-api

调用Wikipedia API时,链接对象中的键是什么意思?

  • 我猜测ns代表命名空间,但为什么它是整数?
  • 为什么exists为每个对象都为空?
  • 为什么看起来是名为*的页面名称标题键?

例如,呼叫:

https://en.wikipedia.org/w/api.php?action=parse&page=List_of_cognitive_biases&prop=links

响应:

{
    "parse": {
        "title": "List of cognitive biases",
        "pageid": 510791,
        "links": [{
            "ns": 0,
            "exists": "",
            "*": "Anthropomorphism"
        }, {
            "ns": 0,
            "exists": "",
            "*": "Apophenia"
        }, 
        ...
        ]
    }
}

2 个答案:

答案 0 :(得分:3)

您是对的,ns代表namespace,所有" 35 namespaces in Wikipedia are numbered for programming purposes..."

存在表示此页面的链接在维基百科中可用。如果链接不存在(它是redlink),则会丢失此行(示例为Wikipedia:Most-wanted articles)。

顺便说一下,使用action query

可以获得相同但更紧凑的结果
https://en.wikipedia.org/w/api.php?action=query&titles=List_of_cognitive_biases&prop=links&pllimit=500

对于您的示例,结果将是:

"links": [
    {
        "ns": 0,
        "title": "Anthropomorphism"
    },{
        "ns": 0,
        "title": "Apophenia"
    },
    ...
]

答案 1 :(得分:1)

当您了解到API内部使用主要用于XML输出的结果格式而不是您正在查看的JSON格式时,属性名称可能更有意义。如果以XML格式查看查询结果,则它们是

<parse title="List of cognitive biases" pageid="510791">
  <links>
    <pl ns="14" exists="" xml:space="preserve">Category:Articles with unsourced statements from November 2013</pl>
    <pl ns="10" exists="" xml:space="preserve">Template:Biases</pl>
    …
    <pl ns="0" exists="" xml:space="preserve">Academic bias</pl>

现在,问题。

  

我猜ns代表“命名空间”?

  

但为什么它是一个整数?

因为它是命名空间ID。命名空间的名称可能会更改,它可能会获得别名和类似的东西。你可以query those

  

为什么exists为每个对象都为空?

因为它是一个布尔属性。当链接页面不存在时,它将完全丢失。

  

为什么看起来是名为*的页面名称标题键?

因为它是“XML标记”对象的内容。