2012-08-10 37 views
5

Tôi cần sử dụng Truy vấn API Wikipedia hoặc bất kỳ api nào khác như Opensearch để truy vấn cho một danh sách đơn giản các trang có một số thuộc tính.Truy vấn các trang Wikipedia có các thuộc tính

Nhập: danh sách tiêu đề hoặc id trang (bài viết).
Output: danh sách các trang có chứa các thuộc tính sau mỗi:
trang id
tiêu đề
đoạn /mô tả (như trong api OpenSearch)
trang url
ảnh url (như trong api OpenSearch)

Kết quả tương tự như sau:
http://en.wikipedia.org/w/api.php?action=opensearch&search=miles%20davis&limit=20&format=xml
Chỉ với id trang và không tìm kiếm, mà là danh sách trang chính xác theo tiêu đề hoặc trang.

Điều này phải là một điều khá đơn giản nhưng tôi đã bị mắc kẹt với điều đó trong một thời gian khá cố gắng tất cả các loại kết hợp URL từ hướng dẫn api MW, mà không thành công.

Trả lời

2

Tôi không nghĩ có cách nào khác ngoài số Open Search API để tìm nạp dữ liệu Tìm kiếm mở, nhưng tùy thuộc vào Wikipedia bạn quan tâm, có thể có các tiện ích khác được cài đặt để trợ giúp bạn. Lấy Wikipedia tiếng Anh làm ví dụ, chúng tôi có thể tận dụng các tiện ích mở rộng MobileFrontendPageImages, điều này xảy ra với be installed there.

  • Tiêu đềurl có sẵn từ API MediaWiki bản địa. Để có được url, bạn có thể sử dụng prop=info, và chỉ định với inprop=url rằng đó là url bạn quan tâm.
  • Nổi bật hình ảnh của một trang được trả về bởi prop=pageimages, nhờ PageImages.
  • MobileFrontend thêm thuộc tính được gọi là extracts, bạn có thể sử dụng với chỉ thị exintro để nhận được đoạn đầu tiên. Tuy nhiên, lưu ý rằng đánh dấu MediWiki rất phức tạp và kết quả có thể không phải lúc nào cũng hoàn hảo. Nếu chúng ta đặt nó tất cả cùng nhau trong một truy vấn duy nhất, nó sẽ là một cái gì đó như thế này:

http://en.wikipedia.org/w/api.php?action=query&pageids=21482&prop=pageimages|info|extracts&inprop=url&exintro

cho này:

<api> 
    <query> 
    <pages> 
     <page pageid="21482" ns="0" title="Nairobi" pageimage="Nairobi_Montage.jpg" contentmodel="wikitext" pagelanguage="en" touched="2014-02-06T06:10:01Z" lastrevid="594161616" counter="" length="89157" fullurl="http://en.wikipedia.org/wiki/Nairobi" editurl="http://en.wikipedia.org/w/index.php?title=Nairobi&amp;action=edit"> 
     <thumbnail source="http://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Nairobi_Montage.jpg/45px-Nairobi_Montage.jpg" width="45" height="50" /> 
     <extract xml:space="preserve"> 
      &lt;p&gt;&lt;b&gt;Nairobi&lt;/b&gt; /naɪˈroʊbi/ is the [...] 
     </extract> 
     </page> 
    </pages> 
    </query> 
</api> 
0

Dưới đây là một quá trình nhiều bước để có được một danh sách của Wikipedia tiêu đề trang và thuộc tính cho bài viết, sau đó nhận ID trang và URL.

Xin lưu ý: Nó sử dụng một phần của câu trả lời trước: "Tiêu đề và url có sẵn từ API MediaWiki gốc. Để có url, bạn có thể sử dụng lệnh prop = info và chỉ định với inprop = url rằng là url bạn quan tâm."

Nếu bạn muốn sử dụng API Wikipedia cho các ứng dụng của riêng bạn và tìm Wikipedia để nhận danh sách các bài viết về một chủ đề nhất định và bạn muốn câu trả lời ở định dạng JSON, thì bạn có thể sử dụng URL sau :
https://en.wikipedia.org/w/api.php?action=query&list=search&srsearch=REPLACE_ME_WITH_SEARCH_TOPIC&format=json&callback= ?

Và nếu đôi mắt của bạn đang gặp khó khăn phân tích kết quả từ đó, sau đó thay thế "? format = json & callback =" với "formatversion = 2" như ví dụ sau đây để làm cho nó dễ dàng hơn cho đôi mắt của bạn:
https://en.wikipedia.org/w/api.php?action=query&list=search&srsearch=REPLACE_ME_WITH_SEARCH_TOPIC&formatversion=2

Ví dụ sau sẽ cung cấp cho tôi danh sách các tiêu đề bài viết và thuộc tính về/cho "Thailand" ở định dạng JSON, và sau đó tôi sẽ sử dụng các tiêu đề kết quả để tìm ID trang và URL của các bài viết đó.
URL bước 1:
https://en.wikipedia.org/w/api.php?action=query&list=search&srsearch=thailand&format=json&callback=?

Từ bước 1, tôi có thể lấy danh sách các tiêu đề tôi cần từ bên trong kết quả JSON, với bước 2, tôi sử dụng những danh hiệu đã đạt được ở bước 1 trong một truy vấn API (aka bước 2) để đạt được các ID trang và URL của các bài viết đó trong kết quả JSON ... kết quả của bước 2.

Dưới đây là tiêu đề bài viết trên Wikipedia từ kết quả JSON của bước 1:

  • Thái Lan
  • Outline Thái Lan
  • Địa lý Thái Lan
  • Kinh tế Thái Lan
  • bóng đá ở Thái Lan
  • Miền Nam Thái Lan
  • Gove rnment Thái Lan
  • Bắc Thái Lan
  • Văn hóa Thái Lan
  • Cinema Thái Lan

URL bước 2:
https://en.wikipedia.org/w/api.php?action=query&titles=Thailand|Outline%20of%20Thailand|Geography%20of%20Thailand|Economy%20of%20Thailand|Football%20in%20Thailand|Southern%20Thailand|Government%20of%20Thailand|Northern%20Thailand|Culture%20of%20Thailand|Cinema%20of%20Thailand&prop=info&inprop=url&format=json&callback=?

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