Все страницы неоднозначности классифицированы как «Все страницы неоднозначности», поэтому вы можете проверить, находится ли эта категория на странице неоднозначности.
Таким образом, вы можете проверить, существует ли «All_disambiguation_pages» каккатегория, чтобы определить, если вы находитесь на странице неоднозначности.Используя запрос https://en.wikipedia.org/w/api.php?action=parse&prop=categories&page=Andrew%20Morgan:
for (category of r.parse.categories) {
if (Object.values(category).includes("All_disambiguation_pages")) {
// we know it's a disambiguation page
}
}
В качестве альтернативы, вы также можете проверить свойство «Устранение неоднозначности», используя запрос:
https://en.wikipedia.org/w/api.php?action=query&prop=pageprops&ppprop=disambiguation&redirects&format=xml&titles=Andrew%20Morgan
Конечно,они только сообщают вам, является ли страница страницей для устранения неоднозначности.В конечном итоге вам нужно знать, что вы ищете.В случае с «Эндрю Морганом» космонавт находится под «Эндрю Р. Морганом».Но некоторые статьи могут использовать «Джон Доу (астронавт)» или другое название.Для этого нет никакой реальной стандартизации.
Например, для примера "астронавт", вы можете найти на странице неоднозначности ключевое слово "астронавт", а затем перейти к этой статье:
fetch('https://en.wikipedia.org/w/api.php?action=opensearch&search=andrew%20morgan&format=json&origin=*')
.then(function(response) {
response.json().then(function(data) {
// data[1] is the array of titles, [2] is the array of descriptions, [3] is the array of links
let articleUrl = data[3][data[2].findIndex(element => element.includes("astronaut"))];
if (articleUrl !== -1) { // -1 would be not found
console.log(articleUrl); //the url
}
});
});