Список Википедии = поиск REST API: как получить также URL совпадающих статей
Я изучаю API REST Wikipedia, но я не могу найти правильный вариант для получения URL-адресов для поискового запроса.
это URL-адрес запроса:
http://it.wikipedia.org/w/api.php?action=query&list=search&srsearch=calvino&format=xml&srprop=snippet
этот запрос выводит только заголовок и фрагмент, но не содержит URL-адреса для статей.
Я проверил документацию API wikipedia для запроса list = search, но, похоже, нет возможности получить также URL-адреса.
С наилучшими пожеланиями,
Фабио Буда
Ответы
Ответ 1
Вы можете легко составить URL-адрес статьи из названия. Для итальянской Википедии он http://it.wikipedia.org/wiki/
, за которым следует URL-кодированный заголовок статьи. Это так просто.
Фактический URL-адрес статьи также заменяет пробелы символами подчеркивания, но вам не нужно этого делать, если вы этого не хотите, URL-адрес с пробелами перенаправляется на символ с подчеркиванием.
РЕДАКТИРОВАТЬ: Вы можете получить URL-адрес, но невозможно получить информацию, связанную с поиском, в то же время. Для этого используйте список как generator. Например:
http://it.wikipedia.org/w/api.php?action=query&generator=search&gsrsearch=calvino&format=xml&gsrprop=snippet&prop=info&inprop=url
Но я думаю, что изменение формата URL-адресов страниц очень маловероятно: слишком много других людей полагаются на это.
Ответ 2
Я обнаружил, что невозможно сразу получить как описание, так и URL-адрес, поэтому я разбил два метода javascript, первое описание получило, второе получило URL:
function get_wiki_info() {
$.ajax({
url: 'http://it.wikipedia.org/w/api.php',
data: { action: 'query', list: 'search', srsearch: $("input[name=city]").val(), format: 'json' },
dataType: 'jsonp',
success: function (data) {
console.log('wiki', data.query.search[0].snippet);
$('#info-wiki-text').html(data.query.search[0].snippet);
get_wiki_links();
},
fail: function (data) {
$('#info-wiki-text').html("Impossible retrieve information for " + $("input[name=city]").val());
}
});
}
function get_wiki_links() {
$.ajax({
url: 'http://it.wikipedia.org/w/api.php',
data: { action: 'query', generator: 'allpages', search: $("input[name=city]").val(), format: 'json', gapfrom: $("input[name=city]").val(), gapto: $("input[name=city]").val(), prop: 'info', inprop: 'url' },
dataType: 'jsonp',
success: function (data) {
console.log('wiki', data.query.pages);
$.each(data.query.pages, function (key, val) {
$('#wiki-city-link').attr('href', val.fullurl);
});
},
fail: function (data) {
console.log(data);
}
});
}
Если вы предпочитаете, чтобы получить описание:
https://it.wikipedia.org/w/api.php?action=query&list=search&srsearch=Your%20Params&utf8=
для получения URL-адреса:
https://it.wikipedia.org/w/api.php?action=query&generator=allpages&search=Your%20Params&gapfrom=Your%20Params&gapto=Your%20Params&prop=info&inprop=url&utf8=