Например, используя этот виджет Википедии:
Существует ли существующая библиотека для Python, которую я могу использовать для создания массива с отображением объектов и значений?
Например:
{height_ft,6},{nationality, American}
Например, используя этот виджет Википедии:
Существует ли существующая библиотека для Python, которую я могу использовать для создания массива с отображением объектов и значений?
Например:
{height_ft,6},{nationality, American}
Похоже, вы действительно хотите разобрать разметку MediaWiki. Для этой цели существует библиотека python, называемая mwlib. Вы можете использовать встроенные пакеты XML python для извлечения содержимого страницы из ответа API, а затем передать этот контент в парсер mwlib для создания представления объекта, которое вы можете просматривать и анализировать в коде, чтобы извлечь нужную вам информацию. mwlib лицензирован BSD.
Просто наткнулся на библиотеку PyPi, wikidump, которая утверждает, что предоставляет
Инструменты для обработки и извлечения данных из дампов википедии
Я еще не использовал его, поэтому вы сами можете попробовать...
Я описал, как это сделать, используя комбинацию pywikibot и mwparserfromhell в этом post (пока еще недостаточно репутации, чтобы обозначить как дубликат).
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 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>
Не забывайте, что параметры тоже являются объектами mwparserfromhell!
Я знаю, что вопрос старый, но я искал библиотеку, которая анализирует wikipedia xml dump. Однако предлагаемые библиотеки wikidump и mwlib не предлагают много документации по коду. Затем я нашел Mediwiki-utilities, в котором есть некоторая документация кода в: http://pythonhosted.org/mediawiki-utilities/.
Здесь есть информация о библиотеках Python и XML здесь.
Если вы спрашиваете, существует ли существующая библиотека, которая специально предназначена для анализа Wiki (pedia) XML и соответствует вашим требованиям, это сомнительно. Однако вы можете использовать одну из существующих библиотек для перемещения DOM и вытащить нужные вам данные.
Другой вариант - написать таблицу стилей XSLT, которая аналогична, и вызвать ее с помощью lxml. Это также позволяет вам совершать вызовы функций Python изнутри XSLT, чтобы получить лучшее из обоих миров.
WikiExtractor представляет собой чистый, простой и эффективный способ сделать это сегодня в Python: https://github.com/attardi/wikiextractor
Он обеспечивает простой способ анализа дампа Википедии в простой файловой структуре:
<doc>...</doc>
<doc>...</doc>
...
<doc>...</doc>
... где каждый документ выглядит следующим образом:
<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>
Возможно, вы ищете Pywikipediabot для управления API-интерфейсом wikipedia.
Я бы сказал, посмотрите Beautiful Soup и просто получите страницу Википедии в HTML вместо использования API.
Я попытаюсь опубликовать пример.