调用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"
},
...
]
}
}
答案 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标记”对象的内容。