2012-01-19 38 views
10

Tôi đang nghiên cứu API REST REST nhưng tôi không thể tìm thấy tùy chọn phù hợp để nhận các URL cho truy vấn tìm kiếm.Danh sách Wikipedia = tìm kiếm REST API: cách truy xuất Url của các bài viết phù hợp

đây là URL được yêu cầu:

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

yêu cầu này chỉ ra các Tiêu đề và Snippet nhưng không có URL cho bài viết. Tôi đã kiểm tra tài liệu wikipedia API cho danh sách = truy vấn tìm kiếm nhưng dường như không có tùy chọn để nhận URL cũng.

Best Regards, Fabio Buda

Trả lời

21

Bạn có thể tạo URL của bài viết một cách dễ dàng bằng cách mình khỏi tiêu đề. Đối với Wikipedia tiếng Ý, nó là http://it.wikipedia.org/wiki/ theo sau là tiêu đề URL-encoded của bài viết. Nó đơn giản như vậy.

URL thực của bài viết cũng thay thế dấu cách bằng dấu gạch dưới, nhưng bạn không phải làm điều đó nếu bạn không muốn, URL có dấu cách chuyển hướng đến dấu gạch dưới.

EDIT: Bạn có thể nhận URL, nhưng không thể nhận thông tin liên quan đến tìm kiếm cùng một lúc. Để làm điều đó, hãy sử dụng danh sách dưới dạng generator. Ví dụ:

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

Nhưng tôi nghĩ rằng việc thay đổi định dạng của URL trang là rất khó xảy ra: quá nhiều người khác dựa vào đó.

+2

Bạn nói đúng nhưng tôi dự kiến ​​các URL trong phản hồi XML | JSON: nếu wikipedia sẽ thay đổi cấu trúc URL (it.wiki .../wiki /) trong tương lai thì sao? có URL trực tiếp từ tính bảo mật của url wikipedia API. Nhưng không có vấn đề và cảm ơn cho câu trả lời của bạn. –

+0

Thực ra, bạn có thể làm điều đó, xem phần chỉnh sửa của tôi. – svick

+0

Thực ra, nó không chỉ là mã hóa URL. So sánh: https://en.wikipedia.org/wiki/пиетет với đối tác được mã hóa URL của nó: –

0

tôi đã tìm thấy không thể lấy cả hai mô tả và url cùng một lúc, vì vậy tôi chia làm hai javascript phương pháp, mô tả get đầu tiên, thứ hai 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); 
     } 
    }); 
} 

Nếu bạn thích, để lấy mô tả :

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

để lấy 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=

Các vấn đề liên quan