Pregunta

Por ejemplo, usando este basurero Wikipedia:

http: // en.wikipedia.org/w/api.php?action=query&prop=revisions&titles=lebron%20james&rvprop=content&redirects=true&format=xmlfm

¿Hay una biblioteca existente para Python que puedo usar para crear una matriz con la asignación de los sujetos y valores?

Por ejemplo:

{height_ft,6},{nationality, American}
¿Fue útil?

Solución

Parece que realmente quiere ser capaz de analizar MediaWiki marcado. Hay una biblioteca de Python diseñado para este propósito llamado mwlib . Puede utilizar paquetes XML incorporadas de pitón para extraer el contenido de la página de la respuesta de la API, a continuación, pasar a ese contenido en el analizador de mwlib para producir una representación de objetos que se pueden ver y analizar en el código para extraer la información que desea. mwlib es BSD licencia.

Otros consejos

Sólo tropezó con una biblioteca en PyPi, wikidump , que pretende ofrecer

  

Herramientas para manipular y extraer datos de Wikipedia vertederos

Yo no lo utilizó, sin embargo, por lo que está en su propia para probarlo ...

I describe cómo hacer esto utilizando una combinación de pywikibot y mwparserfromhell en this posterior (no tienen la reputación suficiente todavía para marcar como un duplicado).

In [1]: import mwparserfromhell

In [2]: import pywikibot

In [3]: enwp = pywikibot.Site('en','wikipedia')

In [4]: page = pywikibot.Page(enwp, 'Waking Life')            

In [5]: wikitext = page.get()               

In [6]: wikicode = mwparserfromhell.parse(wikitext)

In [7]: templates = wikicode.filter_templates()

In [8]: templates?
Type:       list
String Form:[u'{{Use mdy dates|date=September 2012}}', u"{{Infobox film\n| name           = Waking Life\n| im <...> critic film|waking-life|Waking Life}}', u'{{Richard Linklater}}', u'{{DEFAULTSORT:Waking Life}}']
Length:     31
Docstring:
list() -> new empty list
list(iterable) -> new list initialized from iterable's items

In [10]: templates[:2]
Out[10]: 
[u'{{Use mdy dates|date=September 2012}}',
 u"{{Infobox film\n| name           = Waking Life\n| image          = Waking-Life-Poster.jpg\n| image_size     = 220px\n| alt            =\n| caption        = Theatrical release poster\n| director       = [[Richard Linklater]]\n| producer       = [[Tommy Pallotta]]<br />[[Jonah Smith]]<br />Anne Walker-McBay<br />Palmer West\n| writer         = Richard Linklater\n| starring       = [[Wiley Wiggins]]\n| music          = Glover Gill\n| cinematography = Richard Linklater<br />[[Tommy Pallotta]]\n| editing        = Sandra Adair\n| studio         = [[Thousand Words]]\n| distributor    = [[Fox Searchlight Pictures]]\n| released       = {{Film date|2001|01|23|[[Sundance Film Festival|Sundance]]|2001|10|19|United States}}\n| runtime        = 101 minutes<!--Theatrical runtime: 100:40--><ref>{{cite web |title=''WAKING LIFE'' (15) |url=http://www.bbfc.co.uk/releases/waking-life-2002-3|work=[[British Board of Film Classification]]|date=September 19, 2001|accessdate=May 6, 2013}}</ref>\n| country        = United States\n| language       = English\n| budget         =\n| gross          = $3,176,880<ref>{{cite web|title=''Waking Life'' (2001)|work=[[Box Office Mojo]] |url=http://www.boxofficemojo.com/movies/?id=wakinglife.htm|accessdate=March 20, 2010}}</ref>\n}}"]

In [11]: infobox_film = templates[1]

In [12]: for param in infobox_film.params:
             print param.name, param.value

 name             Waking Life

 image            Waking-Life-Poster.jpg

 image_size       220px

 alt             

 caption          Theatrical release poster

 director         [[Richard Linklater]]

 producer         [[Tommy Pallotta]]<br />[[Jonah Smith]]<br />Anne Walker-McBay<br />Palmer West

 writer           Richard Linklater

 starring         [[Wiley Wiggins]]

 music            Glover Gill

 cinematography   Richard Linklater<br />[[Tommy Pallotta]]

 editing          Sandra Adair

 studio           [[Thousand Words]]

 distributor      [[Fox Searchlight Pictures]]

 released         {{Film date|2001|01|23|[[Sundance Film Festival|Sundance]]|2001|10|19|United States}}

 runtime          101 minutes<!--Theatrical runtime: 100:40--><ref>{{cite web |title=''WAKING LIFE'' (15) |url=http://www.bbfc.co.uk/releases/waking-life-2002-3|work=[[British Board of Film Classification]]|date=September 19, 2001|accessdate=May 6, 2013}}</ref>

 country          United States

 language         English

 budget          

 gross            $3,176,880<ref>{{cite web|title=''Waking Life'' (2001)|work=[[Box Office Mojo]] |url=http://www.boxofficemojo.com/movies/?id=wakinglife.htm|accessdate=March 20, 2010}}</ref>

No se olvide que son params mwparserfromhell objetos también!

Sé que la pregunta es viejo, pero yo estaba buscando una biblioteca que analiza Wikipedia volcado XML. Sin embargo, las bibliotecas sugeridas, wikidump y mwlib, no ofrecen muchas documentación de código. Entonces, encontré Mediwiki-utilities , que tiene algunas documentación de código en: http://pythonhosted.org/mediawiki-utilities/ .

WikiExtractor parece ser un lugar limpio, simple, y forma eficaz de hacer esto en Python hoy: https: // github .com / Attardi / wikiextractor

Se proporciona una manera fácil de analizar un vertedero de Wikipedia en una estructura simple de archivos, así:

<doc>...</doc>
<doc>...</doc>
...
<doc>...</doc>

... donde cada documento será similar a:

<doc id="2" url="http://it.wikipedia.org/wiki/Harmonium">
Harmonium.
L'harmonium è uno strumento musicale azionato con una tastiera, detta manuale.
Sono stati costruiti anche alcuni harmonium con due manuali.
...
</doc>

Hay alguna información sobre Python y XML bibliotecas aquí .

Si estás preguntando ¿hay una biblioteca existente que está diseñado para analizar Wiki XML (pedia) específica y satisfacer sus necesidades, esto es dudoso. Sin embargo, usted puede utilizar una de las bibliotecas existentes para recorrer el DOM y extraiga los datos que necesita.

Otra opción es escribir una hoja de estilo XSLT que lo hace similar y llamarlo usando lxml. Esto también le permite hacer llamadas a las funciones de Python desde el interior del XSLT para que pueda obtener lo mejor de ambos mundos.

Probablemente se esté buscando la Pywikipediabot para la manipulación de la API de Wikipedia.

Yo diría vistazo a usar sopa Hermosa y acaba de obtener la página de Wikipedia en HTML en lugar de utilizar la API.

Voy a tratar de publicar un ejemplo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top