2011-08-25 68 views

Trả lời

34

Xem phần này trên MediaWiki docs

Đây là các thông số chính.

prop=revisions&rvprop=content&rvsection=0 

rvsection = 0 chỉ định trả lại phần chính.

Xem ví dụ này.

http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&rvsection=0&titles=pizza

Để có được HTML, bạn có thể sử dụng tương tự như sử dụng action = phân tích http://en.wikipedia.org/w/api.php?action=parse&section=0&prop=text&page=pizza

Lưu ý, rằng bạn sẽ phải loại bỏ bất kỳ mẫu hoặc infoboxes.

+0

Tôi có phải gửi truy vấn hành động = phân tích cú pháp sau khi nhận được giá trị đó không? – bbnn

+2

Tôi muốn nhận được một văn bản sạch sẽ của nó, tôi nên viết phân tích cú pháp của bản thân mình? hoặc có một số truy vấn API để làm như vậy? Cảm ơn bạn – bbnn

+0

vì vậy tôi phải viết trình phân tích cú pháp của riêng tôi từ đây, cảm ơn rất nhiều! – bbnn

3

Nếu bạn cần thực hiện điều này cho một số lượng lớn bài viết, thay vì truy vấn trực tiếp trang web, hãy xem xét tải xuống cơ sở dữ liệu Wikipedia và sau đó truy cập nó thông qua API chẳng hạn như JWPL.

24

Xem Is there a clean wikipedia API just for retrieve content summary? để biết các giải pháp được đề xuất khác. Dưới đây là một trong đó tôi đề nghị:

Có thực sự là một rất đẹp prop gọi extracts có thể được sử dụng với các truy vấn thiết kế đặc biệt cho mục đích này. Chất chiết xuất cho phép bạn trích xuất các bài viết (văn bản bài viết cắt ngắn). Có một tham số được gọi là exintro có thể được sử dụng để truy xuất văn bản trong phần zeroth (không có nội dung bổ sung như hình ảnh hoặc hộp thông tin). Bạn cũng có thể lấy chiết xuất với mịn granularity như bởi một số lượng nhất định của nhân vật (exchars) hoặc bởi một số lượng nhất định của câu (exsentences)

Đây là một truy vấn mẫuhttp://en.wikipedia.org/w/api.php?action=query&prop=extracts&format=json&exintro=&titles=Stack%20OverflowAPI sandboxhttp://en.wikipedia.org/wiki/Special:ApiSandbox#action=query&prop=extracts&format=json&exintro=&titles=Stack%20Overflow để thử nghiệm nhiều hơn với truy vấn này.

Xin lưu ý rằng nếu bạn muốn đoạn đầu tiên cụ thể bạn vẫn cần phải nhận thẻ đầu tiên. Tuy nhiên, trong cuộc gọi API này, không có nội dung bổ sung nào như hình ảnh để phân tích cú pháp. Nếu bạn hài lòng với bản tóm tắt giới thiệu này, bạn có thể truy xuất văn bản bằng cách chạy một hàm như php's strip_tag để xóa các thẻ html.

1

Bạn có thể tải xuống cơ sở dữ liệu Wikipedia trực tiếp và phân tích tất cả các trang thành XML bằng Wiki Parser, là một ứng dụng độc lập. Đoạn đầu tiên là một nút riêng biệt trong kết quả XML.

Hoặc, bạn có thể trích xuất đoạn đầu tiên từ đầu ra văn bản thuần của nó.

12

tôi làm điều đó theo cách này:

https://en.wikipedia.org/w/api.php?action=opensearch&search=bee&limit=1&format=json

Câu trả lời bạn nhận được là một mảng với các dữ liệu, dễ dàng để phân tích:

[ 
    "bee", 
    [ 
    "Bee" 
    ], 
    [ 
    "Bees are flying insects closely related to wasps and ants, known for their role in pollination and, in the case of the best-known bee species, the European honey bee, for producing honey and beeswax." 
    ], 
    [ 
    "https://en.wikipedia.org/wiki/Bee" 
    ] 
] 

Để có được chỉ là đoạn đầu tiên limit=1 là gì bạn cần.

2
<script>  
    function dowiki(place) { 
     var URL = 'https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro=&explaintext='; 

     URL += "&titles=" + place; 
     URL += "&rvprop=content"; 
     URL += "&callback=?"; 
     $.getJSON(URL, function (data) { 
      var obj = data.query.pages; 
      var ob = Object.keys(obj)[0]; 
      console.log(obj[ob]["extract"]); 
      try{ 
       document.getElementById('Label11').textContent = obj[ob]["extract"]; 
      } 
      catch (err) { 
       document.getElementById('Label11').textContent = err.message; 
      } 

     }); 
    } 
</script> 
+0

xem xét thêm một chút mô tả văn bản vào câu trả lời của bạn :) (nghĩa là nó mang lại gì so với những người khác) –

1

Bạn có thể sử dụng JQuery để thực hiện điều đó. Đầu tiên tạo url với các tham số thích hợp. Kiểm tra điều này link để hiểu ý nghĩa của các tham số. Sau đó sử dụng phương pháp $.ajax() để truy xuất các bài viết. Lưu ý rằng wikipedia không cho phép yêu cầu xuất xứ chéo. Đó là lý do tại sao chúng tôi đang sử dụng dataType : jsonp trong yêu cầu.

var wikiURL = "https://en.wikipedia.org/w/api.php"; 
wikiURL += '?' + $.param({ 
    'action' : 'opensearch', 
    'search' : 'your_search_term', 
    'prop' : 'revisions', 
    'rvprop' : 'content', 
    'format' : 'json', 
    'limit' : 10 
}); 

$.ajax({ 
    url: wikiURL, 
    dataType: 'jsonp', 
    success: function(data) { 
     console.log(data); 
    } 
}); 
Các vấn đề liên quan