2012-08-10 16 views
5

Necesito usar Wikipedia API Query o cualquier otra API como Opensearch para consultar una lista simple de páginas con algunas propiedades.Query páginas de Wikipedia con propiedades

Entrada: una lista de títulos de página (artículo) o identificadores.
de salida: una lista de páginas que contienen las siguientes propiedades cada uno:
page id
título
fragmento/descripción (como en la API opensearch)
URL de la página
imagen URL (como en api opensearch)

un resultado similar a este:
http://en.wikipedia.org/w/api.php?action=opensearch&search=miles%20davis&limit=20&format=xml
Sólo con ID de página y no para una búsqueda, sino más bien una lista exacta de páginas por cualquiera de los títulos o pageids.

Esto debería ser algo bastante simple, pero he estado atascado durante bastante tiempo intentando todo tipo de combinaciones de URL del manual de la API MW, sin éxito.

Respuesta

2

No creo que haya otra manera que el Open Search API de buscar datos de Open Search, pero dependiendo de la Wikipedia que le interese, puede haber otras extensiones instaladas para ayudarlo. Tomando Wikipedia en inglés como un ejemplo, podemos hacer uso de las extensiones MobileFrontend y PageImages, que pasa a be installed there.

  • Título y url están disponibles en la API MediaWiki nativa. Para obtener la URL, puede utilizar prop=info, y especificar con inprop=url que es la url le interesa.
  • prominentes imágenes de una página es devuelto por prop=pageimages, gracias a PageImages.
  • MobileFrontend agrega una propiedad llamada extracts, que puede usar con la directiva exintro para obtener el primer párrafo . Sin embargo, tenga en cuenta que el marcado de MediWiki es complejo y que el resultado puede no ser perfecto. Si ponemos todo junto en una sola consulta, sería algo como esto:

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

dando esto:

<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

Aquí es un proceso de varios pasos para obtener una lista de Wikipedia títulos de página y propiedades para artículos, y luego obtener los ID de página y las URL.

Nota: Utiliza una parte de una respuesta anterior: "Título y URL están disponibles desde la API MediaWiki nativa. Para obtener la URL, puede usar prop = info y especificar con inprop = url que es la url que te interesa"

Si desea utilizar la API de Wikipedia para sus propias aplicaciones y buscar Wikipedia para obtener una lista de artículos sobre un tema determinado, y desea la respuesta en formato JSON, podría utilizar la siguiente URL :
https://en.wikipedia.org/w/api.php?action=query&list=search&srsearch=REPLACE_ME_WITH_SEARCH_TOPIC&format=json&callback= ?

Y si sus ojos están teniendo problemas para analizar los resultados de eso, entonces reemplazar "? format = json & devolución de llamada =" con "formatversion = 2" como el siguiente ejemplo para que sea más fácil para los ojos:
https://en.wikipedia.org/w/api.php?action=query&list=search&srsearch=REPLACE_ME_WITH_SEARCH_TOPIC&formatversion=2

El siguiente ejemplo me dará una lista por lotes de títulos de artículos y propiedades sobre/para "Tailandia" en formato JSON, y después utilizaré los títulos resultantes para encontrar los ID de página y las URL de esos artículos.
URL paso 1:
https://en.wikipedia.org/w/api.php?action=query&list=search&srsearch=thailand&format=json&callback=?

A partir del paso 1, que se puede obtener la lista de títulos que necesito desde el interior del JSON resultante, con el paso 2, utilizo esos títulos ganados en el paso 1 en otra consulta de la API (también conocido como paso 2) para obtener los ID de página y las URL de esos artículos en los resultados JSON ... resultantes del paso 2.

Éstos son los títulos de los artículos de Wikipedia de la JSON resultante de la etapa 1:

  • Tailandia
  • Esquema de Tailandia
  • Geografía de Tailandia
  • Economía de Tailandia
  • fútbol en Tailandia
  • sur de Tailandia
  • gove gobie de Tailandia
  • norte de Tailandia
  • Cultura de Tailandia
  • Cine de Tailandia

paso 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=?

Cuestiones relacionadas