2012-01-19 9 views
10

私はWikipedia REST APIを勉強していますが、検索クエリのURLも取得するための正しいオプションを見つけることができません。Wikipedia list = search REST API:一致する記事のURLも取得する方法

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

この要求出力のみタイトルとスニペットが、記事のためノーのURL:

これは、要求のURLです。 リスト=検索クエリのwikipedia APIドキュメントをチェックしましたが、URLも取得するオプションがないようです。

よろしく、 ファビオ・ブダ

答えて

21

あなたはタイトルから簡単に自分の記事のURLを形成することができます。イタリア語Wikipediaの場合は、http://it.wikipedia.org/wiki/、次に記事のURL-encodedタイトルが続きます。それはそれと同じくらい簡単です。

記事の実際のURLもスペースをアンダースコアに置き換えますが、したくない場合はスペースを含むURLがアンダースコアのURLにリダイレクトされます。

EDIT: 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

あなたは正しいですが、私はXML | JSONレスポンスのURLを期待していました:wikipediaが今後URL構造(it.wiki .../wiki /)を変更するとどうなりますか? wikipedia APIのURLの一貫性を保証するURLを直接持ちます。しかし問題はありませんし、あなたの答えに感謝します。 –

+0

実際、あなたはそれを行うことができます、私の編集を参照してください。 – svick

+0

実際、URLエンコードだけではありません。比較: https://en.wikipedia.org/wiki/пиетет のURLエンコードされた対応: –

0

私は一度説明とURLの両方を取得することは不可能で見つけたので、私はjavascriptの方法、最初のGET説明、第二のGET URL 2つに分割:

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

あなたが希望する場合には、説明を取得します:URLを取得する

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=

関連する問題