Например, используя эту Википедию дамп:разбор Википедия свалки
Есть ли существующие библиотеки для Python, что я могу использовать, чтобы создать массив с отображением предметов и ценностей?
Например:
{height_ft,6},{nationality, American}
Например, используя эту Википедию дамп:разбор Википедия свалки
Есть ли существующие библиотеки для Python, что я могу использовать, чтобы создать массив с отображением предметов и ценностей?
Например:
{height_ft,6},{nationality, American}
Похоже, вы действительно хотите разобрать разметку MediaWiki. Для этой цели создана библиотека python под названием mwlib. Вы можете использовать встроенные пакеты XML python для извлечения содержимого страницы из ответа API, а затем передать этот контент в парсер mwlib для создания представления объекта, которое вы можете просматривать и анализировать в коде, чтобы извлечь нужную вам информацию. mwlib лицензирован BSD.
Там какая-то информация о Python и XML-библиотеки here.
Если вы спрашиваете, существует ли существующая библиотека, предназначенная для синтаксического анализа Wiki (pedia) XML и соответствия вашим требованиям, это сомнительно. Однако вы можете использовать одну из существующих библиотек для пересечения DOM и вытащить нужные вам данные.
Другой вариант - написать таблицу стилей XSLT, которая аналогична, и называть ее с помощью lxml. Это также позволяет вам делать вызовы функций Python внутри XSLT, чтобы вы могли получить лучшее из обоих миров.
Sheesh, почему downvote. Если ваш ответ лучше, пусть он будет стоять за себя - мой не был ошибочным. – imoatama
Я бы сказал, используя Beautiful Soup и просто получив страницу Википедии в HTML вместо использования API.
Я попробую и отправлю пример.
Я знаю, что это старый вопрос, но всем, кто наткнулся на это, абсолютно не делает ** НЕ ** делает это. Вся причина, по которой Wikipedia предлагает API, заключается в том, что они могут * эффективно * возвращать необработанные данные пользователям. Скребок вызывает совершенно ненужное усилие на серверах, вызывая механизмы рендеринга и возвращая * все * содержимое статьи. API обходит рендеринг и может использоваться для вытягивания только подмножества данных, которые действительно нужны пользователю (например, только один раздел). Скребок всегда должен использоваться в качестве последнего средства (то есть, если сайт не предлагает API). – Geoff
И даже если HTML полностью раскрывает базовую структуру, вам все равно придется понимать концепцию шаблонов, страниц значений, переадресаций и т. Д. Лучше обрабатывать источник, где это на виду, с разумно семантической разметкой. – tripleee
Просто наткнулся на библиотеку на PyPi, wikidump, который утверждает, что обеспечить
Инструменты для обработки и извлечения данных из Википедии свалки
Я не использовал его еще, так что вы самостоятельно, чтобы попробовать ...
Возможно, вы ищете Pywikipediabot для управления API-интерфейсом wikipedia.
Я описал, как это сделать, используя комбинацию pywikibot и mwparserfromhell в this 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'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>
Не забывайте, что параметры тоже являются объектами mwparserfromhell!
Я знаю, что вопрос старый, но я искал библиотеку, которая анализирует wikipedia xml dump. Однако предлагаемые библиотеки wikidump и mwlib не предлагают много документации по коду. Затем я нашел Mediwiki-utilities, который имеет некоторую документацию кода в: http://pythonhosted.org/mediawiki-utilities/.
Прохладный проект, но работает только с python 3 – GrantD71
WikiExtractor, кажется, чистый, простой и эффективный способ сделать это в Python сегодня: https://github.com/attardi/wikiextractor
Это обеспечивает легкий способ разбора Wikipedia свалка в простой файловой структуры так:
<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>
thx для помощи. Я попробовал учебник mwlib по ссылке, которую вы мне дали Однако я не уверен, как мне манипулировать с объектом Article, который возвращается с помощью simpleparse. Например, как бы я перестроил все данные в формате xml с соответствующими заголовками? – tomwu
Любой действующий инструмент теперь работает? – 2016-03-30 19:08:38
@quantCode Я не честно смотрел на состояние этих инструментов в последние годы, но быстрая проверка [репортаж Github проекта] (https://github.com/pediapress/mwlib) показывает, что mwlib все еще регулярно, если нечасто, обновления. Это, вероятно, стоит посмотреть, если вы планируете что-то делать в этом пространстве. – chaos95