Список Wikipedia = API поиска REST: как получить также URL соответствующих статей - PullRequest
10 голосов
/ 19 января 2012

Я изучаю REST API Википедии, но не могу найти правильный вариант, чтобы получить также URL-адреса для поискового запроса.

это URL запроса:

http://it.wikipedia.org/w/api.php?action=query&list=search&srsearch=calvino&format=xml&srprop=snippet

этот запрос выводит только заголовок и фрагмент, но не URL-адреса для статей. Я проверил документацию API Википедии для поискового запроса list =, но, похоже, нет возможности получить также URL-адреса.

С наилучшими пожеланиями, Фабио Буда

Ответы [ 2 ]

21 голосов
/ 19 января 2012

Вы можете легко сформировать URL статьи самостоятельно из заголовка. Для итальянской Википедии это http://it.wikipedia.org/wiki/, за которым следует URL-кодированный заголовок статьи. Это так просто.

Фактический URL-адрес статьи также заменяет пробелы подчеркиванием, но вам не нужно этого делать, если вы не хотите, чтобы URL-адрес с пробелами перенаправлялся на URL с подчеркиванием.

РЕДАКТИРОВАТЬ: Вы можете получить URL, но невозможно получить информацию, связанную с поиском в то же время. Для этого используйте список в качестве генератора . Например:

http://it.wikipedia.org/w/api.php?action=query&generator=search&gsrsearch=calvino&format=xml&gsrprop=snippet&prop=info&inprop=url

Но я думаю, что изменение формата URL-адресов страниц маловероятно: слишком многие другие полагаются на это.

0 голосов
/ 14 августа 2017

Я считаю невозможным одновременно получить описание и 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=

...