2012-01-19 9 views
10

Studiuję API REST Wikipedii, ale nie jestem w stanie znaleźć odpowiedniej opcji, aby uzyskać adresy URL dla zapytania wyszukiwania.Wikipedia list = szukaj REST API: jak odzyskać URL pasujących artykułów

jest to adres URL żądania:

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

ten wniosek jedynie wyjścia tytuł i fragment, ale nie adresy URL artykułów. Sprawdziłem dokumentację API Wikipedii dla zapytania list = search, ale wydaje się, że nie ma opcji, aby uzyskać również adresy URL.

Pozdrawiam, Fabio Buda

Odpowiedz

21

Można tworzyć URL artykułu łatwo przez siebie z tytułu. W przypadku włoskiej Wikipedii jest to http://it.wikipedia.org/wiki/, a po niej tytuł artykułu URL-encoded. To takie proste.

Rzeczywisty adres URL artykułu również zastępuje spacje podkreśleniami, ale nie musisz tego robić, jeśli nie chcesz, adres URL ze spacjami przekierowuje do tego z podkreśleniami.

EDYCJA: Możesz uzyskać adres URL, ale nie można uzyskać informacji związanych z wyszukiwaniem w tym samym czasie. Aby to zrobić, użyj listy jako generator. Na przykład:

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

ale myślę, zmiany formatu URL strony jest bardzo mało prawdopodobne: zbyt wielu ludzi na tym polegać.

+2

Masz rację, ale spodziewałem się adresów URL w odpowiedzi XML | JSON: co jeśli wikipedia zmieni strukturę adresów URL (it.wiki .../wiki /) w przyszłości? posiadanie adresów URL bezpośrednio z API Wikipedii gwarantuje zgodność URL-a. Ale nie ma problemu i dziękuję za odpowiedź. –

+0

Właściwie możesz to zrobić, zobacz moją edycję. – svick

+0

Właściwie to nie jest tylko kodowanie adresów URL. Porównaj: https://en.wikipedia.org/wiki/пиетет z odpowiednikiem z kodowaniem URL: –

0

Znalazłem niemożliwe do pobierania zarówno opis i adres URL naraz, więc podzielony na dwie części javascript metoda, pierwszy opis get, drugi 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); 
     } 
    }); 
} 

Jeśli wolisz, aby pobrać opis :

https://it.wikipedia.org/w/api.php?action=query&list=search&srsearch=Your%20Params&utf8=

pobrać 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=

Powiązane problemy