Javascript 如何使用WikipediaAPI在页面列表中查找关于同名人员的特定人员

Javascript 如何使用WikipediaAPI在页面列表中查找关于同名人员的特定人员,javascript,angular,wikipedia,wikipedia-api,Javascript,Angular,Wikipedia,Wikipedia Api,假设我有一份宇航员名单,我想用维基百科API展示他们的传记。 到目前为止,我已经试过这个: https://en.wikipedia.org/w/api.php?action=parse&prop=wikitext&page=Nick%20Hague 一切正常。但看看这个例子: https://en.wikipedia.org/w/api.php?action=parse&prop=wikitext&page=Andrew%20Morgan 正如你所看到的,有

假设我有一份宇航员名单,我想用维基百科API展示他们的传记。
到目前为止,我已经试过这个:

https://en.wikipedia.org/w/api.php?action=parse&prop=wikitext&page=Nick%20Hague
一切正常。但看看这个例子:

https://en.wikipedia.org/w/api.php?action=parse&prop=wikitext&page=Andrew%20Morgan
正如你所看到的,有不止一个“安德鲁·摩根”,这就是问题所在。如果他是美国宇航局的宇航员,我如何获得“安德鲁·R·摩根”的信息

请注意,“AndrewMorgan”只是一个示例,它可能会更改。这些名称将从另一个API发送给我。因此,我无法每次手动更改他们的姓名。

您可以通过以下方式访问“Andrew R.Morgan”的信息:

https://en.wikipedia.org/w/api.php?action=parse&prop=wikitext&page=Andrew%20R.%20Morgan

空间由
%20

表示,消歧页面都被分类为“所有消歧页面”,因此您可以检查该类别以查看是否在消歧页面上

因此,您可以检查“所有消歧页面”是否作为一个类别存在,以确定您是否在消歧页面上。使用查询:

或者,您也可以使用以下查询检查“消歧”属性:

当然,这些只会告诉您该页面是否为消歧页面。最终,你需要知道你在寻找什么。在“安德鲁·摩根”一案中,宇航员属于“安德鲁·R·摩根”。但有些文章可能会使用“JohnDoe(宇航员)”或其他标题。这方面没有真正的标准化

以“宇航员”为例,您可以在消歧页面中搜索关键字“宇航员”,然后转到该文章:

fetch('https://en.wikipedia.org/w/api.php?action=opensearch&search=andrew%20morgan&format=json&origin=*')
.然后(功能(响应){
response.json().then(函数(数据){
//数据[1]是标题数组,[2]是描述数组,[3]是链接数组
让articleUrl=data[3][data[2].findIndex(element=>element.includes(“宇航员”))];
如果(articleUrl!==-1){/-1将找不到
console.log(articleUrl);//url
}
});

});这是不可能的,因为“安德鲁·摩根”只是一个例子。这些名称将从另一个API发送给我,所以每次我都不知道哪个名称是正确的。看一看,这就是我所需要的。又漂亮又干净!
for (category of r.parse.categories) {
    if (Object.values(category).includes("All_disambiguation_pages")) {
        // we know it's a disambiguation page
    }
}