2012-01-19 4 views
10

Wikipedia REST API를 연구 중이지만 검색 쿼리의 URL도 얻을 수있는 올바른 옵션을 찾을 수 없습니다. Wikipedia list = search REST API : 일치하는 기사의 URL도 검색하는 방법

는 요청의 URL : 만

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

이 요청 출력 제목과 스 니펫하지만 기사에 대한 어떤 URL이 표시됩니다. 목록 = 검색 쿼리에 대한 위키피디아 API 문서를 확인했지만 URL도 얻을 수있는 옵션이없는 것으로 보입니다.

최고 감사합니다, 파비오 부다

답변

21

당신은 제목에서 쉽게 스스로 기사의 URL을 형성 할 수있다. 이탈리아어 위키피디아의 경우 http://it.wikipedia.org/wiki/이고 그 뒤에 URL-encoded이라는 기사 제목이 있습니다. 그것만큼이나 간단합니다.

기사의 실제 URL도 공백을 밑줄로 바꿉니다. 원하지 않는 경우 공백이있는 URL은 밑줄이있는 URL로 리디렉션됩니다.

편집 : 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 /)를 변경하면 어떻게 될까? 위키 피 디아 API URL에서 직접 URL을 가져 와서 URL의 일관성을 보장합니다. 그러나 문제는 없으며 당신의 대답에 감사드립니다. –

+0

사실, 편집 할 수 있습니다. – svick

+0

실제로 URL 인코딩이 아닙니다. 비교 : https://en.wikipedia.org/wiki/пиетет 의 URL 인코딩 된 부분 : –

0

나는 한 번 설명 및 URL을 모두 검색하는 것은 불가능 발견했습니다, 그래서 자바 스크립트 방법 첫 번째 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); 
     } 
    }); 
} 

원하는 경우이 설명을 검색 :

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

가 검색 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=