2012-01-19 11 views
10

Sto studiando l'API REST di Wikipedia ma non sono in grado di trovare l'opzione giusta per ottenere anche URL per una query di ricerca.Elenco Wikipedia = ricerca API REST: come recuperare anche Url di articoli corrispondenti

Questo è l'URL della richiesta:

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

uscite questa richiesta solo il titolo e lo snippet ma nessun URL per gli articoli. Ho controllato la documentazione dell'API di wikipedia per l'elenco = query di ricerca ma sembra che non ci sia alcuna opzione per ottenere anche gli URL.

migliori saluti, Fabio Buda

risposta

21

Si possono formare l'URL dell'articolo facilmente da soli dal titolo. Per la Wikipedia italiana, è http://it.wikipedia.org/wiki/ seguito dal titolo dell'articolo URL-encoded. E 'così semplice.

L'URL effettivo dell'articolo sostituisce anche gli spazi con caratteri di sottolineatura, ma non è necessario farlo se non si desidera, l'URL con spazi reindirizza a quello con caratteri di sottolineatura.

MODIFICA: È possibile ottenere l'URL, ma non è possibile ottenere le informazioni relative alla ricerca contemporaneamente. Per fare ciò, utilizzare l'elenco come generator. Per esempio:

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

ma credo che cambiare il formato di URL di pagine è molto improbabile: troppe altre persone si basano su questo.

+2

Hai ragione ma mi aspettavo URL nella risposta XML | JSON: cosa succede se wikipedia modificherà la struttura dell'URL (it.wiki .../wiki /) in futuro? avere gli URL direttamente dall'API di wikipedia garantisce la coerenza dell'URL. Ma nessun problema e grazie per la tua risposta. –

+0

In realtà, puoi farlo, vedi la mia modifica. – svick

+0

In realtà, non è solo la codifica dell'URL. Confronta: https://en.wikipedia.org/wiki/пиетет alla sua controparte con codifica URL: –

0

ho trovato impossibile da recuperare sia la descrizione e URL in una sola volta, così ho diviso in due javascript metodo, la prima descrizione get, il secondo get 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); 
     } 
    }); 
} 

Se si preferisce, per recuperare descrizione :

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

per recuperare 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=

Problemi correlati