Python 解析维基百科转储

Python 解析维基百科转储,python,mediawiki,wikipedia-api,mediawiki-api,wikimedia-dumps,Python,Mediawiki,Wikipedia Api,Mediawiki Api,Wikimedia Dumps,例如,使用此Wikipedia转储: 是否有一个现有的Python库,我可以使用它创建一个带有主题和值映射的数组 例如: {height_ft,6},{nationality, American} 这里有一些关于Python和XML库的信息 如果您想知道是否有一个现有的库专门用于解析Wiki(pedia)XML并符合您的需求,这是值得怀疑的。但是,您可以使用现有库中的一个来遍历DOM并提取所需的数据 另一种选择是编写一个XSLT样式表,该样式表执行类似的操作,并使用lxml调用它。这还允许您

例如,使用此Wikipedia转储:

是否有一个现有的Python库,我可以使用它创建一个带有主题和值映射的数组

例如:

{height_ft,6},{nationality, American}

这里有一些关于Python和XML库的信息

如果您想知道是否有一个现有的库专门用于解析Wiki(pedia)XML并符合您的需求,这是值得怀疑的。但是,您可以使用现有库中的一个来遍历DOM并提取所需的数据

另一种选择是编写一个XSLT样式表,该样式表执行类似的操作,并使用lxml调用它。这还允许您从XSLT内部调用Python函数,以便充分利用这两个方面。

我想说的是,看看如何使用HTML而不是API来获取Wikipedia页面


我将尝试发布一个示例。

看起来您确实希望能够解析MediaWiki标记。有一个专门为此设计的python库,名为。您可以使用python的内置XML包从API的响应中提取页面内容,然后将该内容传递到mwlib的解析器中,以生成一个对象表示,您可以在代码中浏览和分析该对象表示,以提取所需的信息。mwlib是BSD许可的。

刚刚偶然发现PyPi上的一个库,该库声称提供

从wikipedia转储操作和提取数据的工具


我还没有使用它,所以您可以自己尝试……

您可能正在寻找操纵wikipedia API的方法。

我描述了如何使用pywikibot和in的组合来实现这一点(还没有足够的声誉来标记为副本)

[1]中的
:导入mwparserfromhell
在[2]中:导入pywikibot
在[3]中:enwp=pywikibot.Site('en','wikipedia')
在[4]中:page=pywikibot.page(enwp,“清醒生活”)
在[5]中:wikitext=page.get()
在[6]中:wikicode=mwparserfromhell.parse(wikitext)
在[7]中:templates=wikicode.filter\u templates()
在[8]:模板?
类型:列表
字符串形式:[u'{使用mdy日期{date=2012年9月}',u'{{Infobox film\n | name=Reaking Life\n | im评论电影{124; Reaking Life}',u'{Richard Linklater}',u'{DEFAULTSORT:Reaking Life}}]
长度:31
文档字符串:
list()->新建空列表
列表(iterable)->从iterable的项初始化的新列表
在[10]中:模板[:2]
出[10]:
[u'{使用mdy日期|日期=2012年9月}},
u“{Infobox film\n | name=清醒生活\n | image=清醒生活海报.jpg\n | image|u size=220px\n | alt=\n | caption=戏剧发行海报\n |导演=[[Richard Linklater]]]\n |制片人=[[Tommy Pallotta]]
[[Jonah Smith]]
安妮·沃克·麦克贝
帕尔默·韦斯特\n |作家=理查德·林克莱特\n |主演=[[Wiley Wiggins]]\n |音乐=格洛弗·吉尔\n |摄影=理查德·林克莱特
[[Tommy Pallotta]]]\n |编辑=桑德拉·阿代尔\n |工作室=[[千言万语]\n |发行商=[[Fox探照灯图片]]\发布日期{电影日期| 2001 | 01 | 23 |[[圣丹斯电影节|圣丹斯]]2001 | 10 | 19 |美国}\n |运行时间=101分钟{引用网页|标题{唤醒生活|(15)|网址=http://www.bbfc.co.uk/releases/waking-life-2002-3|作品=[[英国电影分级委员会]]|日期=2001年9月19日|访问日期=2013年5月6日}\国家=美国\n语言=英语\n |预算=\n |毛额=3176880美元{{引用网站|标题=“清醒的生活”(2001)|工作=[[票房魔咒]]| url=http://www.boxofficemojo.com/movies/?id=wakinglife.htm|accessdate=2010年3月20日}}\n}“] 在[11]中:infobox_film=模板[1] 在[12]中:对于infobox_film.params中的参数: 打印param.name、param.value 叫醒生活 image-Life-Poster.jpg 图像大小220px 中高音 字幕剧场发行海报 董事[[Richard Linklater]] 制片人[[Tommy Pallotta]]
[[Jonah Smith]]
安妮·沃克·麦克贝
作家理查德·林克莱特 主演[[Wiley Wiggins]] 音乐格洛弗·吉尔 电影摄影理查德·林克莱特
[[Tommy Pallotta]] 编辑桑德拉·阿代尔 工作室[[千字]] 分销商[[福克斯探照灯图片]] 上映{电影日期| 2001 | 01 | 23 |[[圣丹斯电影节|圣丹斯]]2001 | 10 | 19 |美国} 运行时101分钟{引用web |标题=“清醒的生活”(15)| url=http://www.bbfc.co.uk/releases/waking-life-2002-3|作品=[[英国电影分级委员会]]|日期=2001年9月19日|访问日期=2013年5月6日} 美国 语言英语 预算 总收入3176880美元{引用网页|标题="清醒的生活"|工作=[[票房魔咒]]|网址=http://www.boxofficemojo.com/movies/?id=wakinglife.htm|accessdate=2010年3月20日}

别忘了参数也是mwparserfromhell对象!

我知道这个问题很老,但我正在搜索一个解析wikipedia xml转储的库。但是,建议的库wikidump和mwlib没有提供很多代码文档。然后,我找到了,其中有一些代码文档在:。

WikiExtractor似乎是一个如今在Python中实现这一点的干净、简单和高效的方法:

它提供了一种将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>

口琴。
口琴是一种乐器,它是一种音乐。
这是一种非常好的口琴。
...

我知道这是一个老问题,但我这里有一个很棒的脚本,它读取wiki转储xml并输出一个非常好的csv:

PyPI:


GitHub:

thx寻求帮助。我在你给我的链接中尝试了mwlib教程,但是我不确定如何使用retur的Article对象进行操作
<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>