2012-01-19 16 views
10

मैं विकिपीडिया आरईएसटी एपीआई का अध्ययन कर रहा हूं लेकिन मुझे खोज क्वेरी के लिए यूआरएल प्राप्त करने का सही विकल्प नहीं मिल रहा है।विकिपीडिया सूची = खोज आरईएसटी एपीआई: मिलान लेखों के यूआरएल को पुनः प्राप्त करने के लिए कैसे करें

इस

अनुरोध का यूआरएल है:

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

इस अनुरोध को केवल आउटपुट शीर्षक और स्निपेट लेकिन लेख के लिए कोई यूआरएल। मैंने सूची = खोज क्वेरी के लिए विकिपीडिया एपीआई दस्तावेज की जांच की है लेकिन लगता है कि यूआरएल पाने के लिए कोई विकल्प नहीं है।

शुभकामनाओं सहित, फैबियो बुडा

उत्तर

21

आप शीर्षक से आसानी से अपने आप से लेख के URL बना सकते हैं। इतालवी विकिपीडिया के लिए, यह http://it.wikipedia.org/wiki/ है जिसके बाद लेख का URL-encoded शीर्षक है। यह इतना सरल है।

लेख का वास्तविक 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

आप सही हैं लेकिन मुझे एक्सएमएल में यूआरएल की उम्मीद है। JSON प्रतिक्रिया: यदि भविष्य में विकिपीडिया यूआरएल संरचना (it.wiki .../wiki /) को बदल देगा तो क्या होगा? विकिपीडिया एपीआई गारंटी यूआरएल स्थिरता से सीधे यूआरएल होने। लेकिन आपके जवाब के लिए कोई समस्या नहीं है और धन्यवाद। –

+0

दरअसल, आप ऐसा कर सकते हैं, मेरा संपादन देखें। – svick

+0

दरअसल, यह सिर्फ यूआरएल एन्कोडिंग नहीं है। तुलना करें: https://en.wikipedia.org/wiki/пиетет अपने यूआरएल-एन्कोडेड समकक्ष के लिए: –

0

मैं एक ही बार में दोनों विवरण और 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=

पुनः प्राप्त करने के यूआरएल:

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=