2012-08-10 3 views
5

Мне нужно использовать Query Wikipedia Query или любые другие api, такие как Opensearch, для запроса простого списка страниц с некоторыми свойствами.Запросить страницы Википедии со свойствами

Ввод: список страниц (статей) или идентификаторов.
Вывод: список страниц, которые содержат следующие свойства каждого:
идентификатор страницы
название
сниппета/описание (например, в OpenSearch API)
URL страницы
URL изображения (например, в OpenSearch API)

результат, похожий на этот:
http://en.wikipedia.org/w/api.php?action=opensearch&search=miles%20davis&limit=20&format=xml
только с страниц идентификаторами, а не для поиска, а точный список страниц, либо заголовков или pageids.

Это должно быть довольно простой вещью, но я застрял в этом довольно долго, пробовав всевозможные комбинации URL из руководства MW api без успеха.

ответ

2

Я не думаю, что есть другой способ, чем Open Search API, чтобы извлекать данные Open Search, но в зависимости от того, в какой википедии вас интересуют, могут быть установлены другие расширения, которые помогут вам. Например, используя английскую Википедию, мы можем использовать расширения MobileFrontend и PageImages, которые происходят с be installed there.

  • Название и URL доступны из нативного MediaWiki API. Чтобы получить URL, вы можете использовать prop=info и указать с inprop=url, что это гиперссылка вас интересует.
  • Видные изображения страницы возвращается prop=pageimages, благодаря PageImages.
  • MobileFrontend добавляет свойство extracts, которое вы можете использовать с директивой exintro, чтобы получить первый абзац. Однако обратите внимание, что разметка MediWiki сложна, и результат может быть не всегда идеальным. Если мы соберем все вместе в одном запросе, было бы что-то вроде этого:

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

давая это:

<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

Вот многоэтапный процесс, чтобы получить список Википедии названия страниц и свойства для статей, а затем получение идентификаторов страниц и URL-адресов.

Обратите внимание: он использует часть предыдущего ответа: «Название и URL-адрес доступны из собственного MediaWiki API. Чтобы получить URL-адрес, вы можете использовать prop = info и указать с помощью inprop = url, что это URL-адрес, который вас интересует."

Если вы хотите использовать API Википедии для своих приложений и искать Википедию для получения списка статей по определенной теме, и вы хотели получить ответ в формате JSON, тогда вы могли бы использовать следующий URL-адрес :
https://en.wikipedia.org/w/api.php?action=query&list=search&srsearch=REPLACE_ME_WITH_SEARCH_TOPIC&format=json&callback= ?

И если ваши глаза возникли проблемы при разборе результатов от этого, а затем заменить «? = формат JSON & обратного вызова =» с «formatversion = 2», как в следующем примере, чтобы сделать его проще для ваших глаз:
https://en.wikipedia.org/w/api.php?action=query&list=search&srsearch=REPLACE_ME_WITH_SEARCH_TOPIC&formatversion=2

Следующий пример предоставит мне пакетный список названий и свойств статьи о/для «Таиланд» в формате JSON, после чего я буду использовать полученные заголовки, чтобы найти идентификаторы страниц и URL-адреса этих статей.
URL шаг 1:
https://en.wikipedia.org/w/api.php?action=query&list=search&srsearch=thailand&format=json&callback=?

От шага 1, я могу получить список названий, мне нужно внутри полученного JSON, с шагом 2, я использую эти названия получили в шаге 1, в другом запросе API (aka шаг 2) для получения идентификаторов страниц и URL-адресов этих статей в результате результатов JSON ... на этапе 2.

Вот названия Википедии статья из полученного JSON на шаге 1:

  • Таиланд
  • Outline Таиланда
  • География Таиланда
  • Экономика Таиланда
  • Футбол в Таиланде
  • Southern Thailand
  • Gove rnment Таиланда
  • Северный Таиланд
  • Культура Таиланда
  • Кино Таиланда

шаг URL 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=?

Смежные вопросы