2011-10-03 15 views
20

Los artículos de Wikipedia pueden tener plantillas de Infobox. Con la siguiente llamada puedo obtener la primera sección de un artículo que incluye Infobox.¿Cómo obtener Infobox de un artículo de Wikipedia de Mediawiki API?

http://en.wikipedia.org/w/api.php?action=parse&pageid=568801&section=0&prop=wikitext 

Lo que quiero es una consulta que solo devolverá los datos de Infobox. es posible?

+1

duplicado posible de [Conseguir la sección de Ficha de Wikipedia] (http://stackoverflow.com/questions/3312346/getting-the-infobox-section-of-wikipedia) – Nemo

+0

Ver [¿Cómo extraer información de un cuadro de información de Wikipedia?] (https://stackoverflow.com/questions/33862336/how-to-extract-information-from-a-wikipedia-infobox) para obtener una respuesta más detallada. – Tgr

Respuesta

7

En lugar de analizar infoboxes usted mismo, lo cual es bastante complicado, consulte DBPedia, que tiene infoboxes de Wikipedia extraídos como objetos de la base de datos.

+0

punta brillante! ¡Gracias! No reinventes la rueda analizando por ti mismo la api de wikimedia. – ArisRe82

+1

Esto, sin embargo, le dará todas las relaciones con una entidad en particular, pero no le dirá qué campos existen en la caja de información – MFARID

23

Puede hacerlo con una llamada a la API URL Wikipedia como esto:

http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=xmlfm&titles=Scary%20Monsters%20and%20Nice%20Sprites&rvsection=0 

reemplazar la sección titles= con su título de la página, y format=xmlfm a format=json si desea que el artículo en formato JSON.

2

Sobre la respuesta de @ Garry, que puede tener Wikipedia analizar el cuadro de información en html para usted a través del parámetro rvparse así:

http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=json&titles=Scary%20Monsters%20and%20Nice%20Sprites&rvsection=0&rvparse 

Tenga en cuenta que ninguno de los métodos volverá simplemente el cuadro de información. Pero desde el contenido html, puede extraer (a través de, por ejemplo, beautifulsoup) el table con la clase infobox.

En Python, hacer algo como lo siguiente

resp = requests.get(url).json() 
page_one = next(iter(resp['query']['pages'].values())) 
revisions = page_one.get('revisions', []) 
html = next(iter(revisions[0].values())) 
# now parse the html 
1

Si la página tiene una caja de información lado derecho, a continuación, utilizar este URL para obtenerlo en forma txt. Mi ejemplo es usar el elemento Hidrógeno. Todo lo que necesita hacer es reemplazar "Hidrógeno" con su título.

https://en.wikipedia.org/w/index.php?action=raw&title=Template:Infobox%20hydrogen

Si usted está buscando para el formato JSON utilizar esta URL, pero no es bastante.

https://en.wikipedia.org/w/api.php?action=parse&page=Template:Infobox%20hydrogen&format=json

Cuestiones relacionadas