2012-01-19 15 views
10

eşleşen makalelerin de Url almak ama bir arama sorgusu için de URL'leri almak için doğru seçeneği bulmak mümkün değilim nasıl. Vikipedi list = arama REST API: Ben Vikipedi DİNLENME API okuyorum

bu

isteğin URL: Sadece

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

bu istek çıkışları Başlığı ve Pasaj ama makaleler için hiçbir URL'ler. Liste = arama sorgusu için wikipedia API belgelerini kontrol ettim, ancak URL'leri almanın hiçbir seçeneği yok gibi görünüyor.

Saygılarımızla, Fabio Buda

cevap

21

Başlığa kolayca kendiniz makalenin URL'sini oluşturabilir. İtalyan Vikipedi için, http://it.wikipedia.org/wiki/, ardından makalenin URL-encoded başlığı. Bu kadar basit.

Makalenin gerçek URL'si ayrıca altçizgi olan boşlukların yerini alır, ancak istemiyorsanız bunu yapmak zorunda değilsiniz, boşluk içeren URL alt çizgilere yönlendirir.

DÜZENLEME: URL'yi alabilirsiniz, ancak arama ile ilgili bilgileri aynı anda almak mümkün değildir. Bunu yapmak için listeyi generator olarak kullanın. Örneğin:

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

Ama sayfa URL'lerin biçimini değiştirerek düşünüyorum çok olası değildir: Çok sayıda kişi bu güvenir.

+2

Haklısın ama XML URL'leri beklenen | JSON yanıtı: wikipedia gelecekte URL yapısını (it.wiki .../wiki /) değiştirmek ya olursa? URL'lere doğrudan sahip olma API'sı, url tutarlılığı garanti eder. Ama sorun değil, cevabınız için teşekkürler. –

+0

Aslında bunu yapabilirsin, benim düzenlememi gör. – svick

+0

Aslında, yalnızca URL kodlaması değil. Karşılaştırma: https://en.wikipedia.org/wiki/пиетет onun URL olarak kodlanmış meslektaşı: –

0

Tek seferde açıklama ve url hem imkansız almak bulduk, bu yüzden javascript yöntem, ilk olsun açıklama, ikinci olsun url ikiye bölünmüş:

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); 
     } 
    }); 
} 

İsterseniz, açıklamayı getirmek için :

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

almak için 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=