2009-06-08 17 views
59

Estoy tratando de averiguar si hay una API api (¿creo que está relacionada con mediawiki?).¿Cómo usar la API de wikipedia si existe?

Si es así, me gustaría saber cómo le diría a wikipedia que me diera un artículo sobre los yankees de Nueva York, por ejemplo.

¿Cuál sería la URL REST para este ejemplo?

Todos los documentos sobre este tema parecen bastante complicados.

+5

El "si existe" pieza también está cubierto aquí: http: // stackoverflow.com/questions/627594/is-there-a-wikipedia-api. Pero creo que la parte de "cómo usarlo" es una pregunta legítima ... más o menos. – Jonik

+0

Ahora hay un paquete R que accede a la API de Mediawiki (y por lo tanto a Wikipedia), más detalles y un ejemplo: http://stackoverflow.com/a/24027866/1036500 – Ben

Respuesta

81

Usted realmente tiene que pasar algún tiempo leyendo la documentación, ya que esto me tomó un momento para mirar y hacer clic en el enlace para arreglarlo :/pero por simpatía te proporcionaré un enlace que quizás puedas aprender a utilizar.

http://en.wikipedia.org/w/api.php?action=query&prop=revisions&titles=New_York_Yankees&rvprop=timestamp|user|comment|content

Esa es la variabled que se busca obtener. Su mejor apuesta es conocer la página que será después y sustituir la parte de enlace de Wikipedia en el título, a saber:

http://en.wikipedia.org/wiki/New_York_Yankees [tomar la parte después de la wiki /]

->

http://en.wikipedia.org/w/api.php?action=query&prop=revisions&titles=New_York_Yankees&rvprop=timestamp|user|comment|content

[Colóquelo en la variable de título de la solicitud GET.

La URL anterior puede ser útil para ajustar las diferentes secciones que desea o no desea. Así que lea la documentación :)

+19

+1 para obtener un ejemplo real, en lugar de solo enlaces de dumping (aunque el ejemplo también es solo un enlace ... :) – Jonik

+6

UN LUGAR FANTÁSTICO para comenzar es con el sandbox de wikipedia. Puede ayudarlo a formatear sus solicitudes/consultas: http://en.wikipedia.org/wiki/Special:ApiSandbox – LucianNovo

+2

¿Qué sucede si no conozco la página específica? Como si quisiera buscar a la banda Iron Maiden? La página podría ser "iron maiden", "Iron Maiden", "Iron Maiden Band". ¿Cómo busco eso? –

13

Ver http://www.mediawiki.org/wiki/API

En concreto, para la Wikipedia en Inglés, API se encuentra en http://en.wikipedia.org/w/api.php

+3

Sí, no puedo entender cómo hacer mi ejemplo después leyendo eso. ¿algunas ideas? – chris

+3

no, en serio no puedo entender ese documento. No sé cómo obtener datos específicos de la página usando esa API. – chris

+3

Realmente no puedes. Para obtener la fuente del artículo en bruto, debe acceder a los artículos de esta manera: http://www.mediawiki.org/w/index.php?title=API&action=raw – drdaeman

66

Las respuestas aquí me ayudaron a llegar a una solución, pero descubrí más información en el proceso que puede ser una ventaja para los demás que encuentran esta pregunta. Me imagino que la mayoría de la gente simplemente quiere usar la API para obtener contenido rápidamente de la página. Así es como lo estoy haciendo que:

Uso de Revisiones:

//working url: 
http://en.wikipedia.org/w/api.php?action=query&prop=revisions&titles=Threadless&rvprop=content&format=json&rvsection=0&rvparse=1 

//Explanation 
//Base Url: 
http://en.wikipedia.org/w/api.php?action=query 

//tell it to get revisions: 
&prop=revisions 

//define page titles separated by pipes. In the example i used t-shirt company threadless 
&titles=whatever|the|title|is 

//specify that we want the page content 
&rvprop=content 

//I want my data in JSON, default is XML 
&format=json 

//lets you choose which section you want. 0 is the first one. 
&rvsection=0 

//tell wikipedia to parse it into html for you 
&rvparse=1 

utilizando extractos (mejor/más fácil de lo que estoy haciendo)

//working url: 
http://en.wikipedia.org/w/api.php?action=query&prop=extracts&titles=Threadless&format=json&exintro=1 

//only explaining new parameters 
//instead of revisions, we'll set prop=extracts 
&prop=extracts 

//if we just want the intro, we can use exintro. Otherwise it shows all sections 
&exintro=1 

Toda la información requiere la lectura a través de la Documentación API como se mencionó, pero espero que estos ejemplos ayuden a la mayoría de las personas que vienen aquí para una solución rápida.

+0

¡La primera url de trabajo proporcionada también le permite recuperar el cuadro de información de la página wiki! Gracias –

+0

hola, ¿hay alguna manera de obtener el texto sin formato de la descripción principal? es muy difícil analizar las respuestas de Wikitext o HTMl :(. cualquier ayuda será muy apreciada por favor. –

8

Si desea extraer datos estructurados de Wikipedia, es posible considerar el uso de DBpedia http://dbpedia.org/

Proporciona medios para consultar datos utilizando criterios dados a partir de datos de SPARQL y regresa de Plantillas de imágenes de Wikipedia analizados

Hay algunos Bibliotecas SPARQL disponibles para múltiples plataformas para hacer consultas más fáciles

1

Wiki Parser convierte Wikipedia volcados en XML. También es bastante rápido. A continuación, puede utilizar cualquier herramienta de procesamiento XML para manejar los datos de los artículos de Wikipedia analizados.

2

A continuación se muestra un ejemplo de trabajo que imprime la primera frase de Wikipedias Yankees de Nueva York página a la consola navegadores web:

<!DOCTYPE html> 
</html> 
    <head> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
    </head> 
    <body> 
     <script> 
      var wikiUrl = "http://en.wikipedia.org/w/api.php?action=opensearch&search=New_York_Yankees&format=json&callback=wikiCallbackFunction"; 

      $.ajax(wikiUrl, { 
       dataType: "jsonp", 
       success: function(wikiResponse) { 
        console.log(wikiResponse[2][0]); 
       } 
      }); 
     </script> 
    </body> 
</html> 

http://en.wikipedia.org/w/api.php es el punto final para su url. Puede ver cómo estructurar su url visitando: http://www.mediawiki.org/wiki/API:Main_page

Utilicé jsonp como el tipo de datos para permitir solicitudes entre sitios. Más se puede encontrar aquí: http://www.mediawiki.org/wiki/API:Cross-site_requests

Por último, pero no menos importante, asegúrese de hacer referencia a la Jquery.ajax() de la API: http://api.jquery.com/jquery.ajax/

Cuestiones relacionadas