2024-04-27 04:40:40 发布
网友
例如,使用此维基百科转储:
http://en.wikipedia.org/w/api.php?action=query&prop=revisions&titles=lebron%20james&rvprop=content&redirects=true&format=xmlfm
是否有一个Python的现有库,可以用来创建一个带有主题和值映射的数组?
例如:
{height_ft,6},{nationality, American}
我描述了如何使用pywikibot和this post中的mwparserfromhell(还没有足够的声誉来标记为副本)的组合来实现这一点。
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>
别忘了params也是mwparserfromhell对象!
看起来您真的希望能够解析MediaWiki标记。有一个为此目的而设计的python库,名为mwlib。您可以使用python的内置XML包从API的响应中提取页面内容,然后将该内容传递到mwlib的解析器中,以生成一个对象表示,您可以在代码中浏览和分析该对象表示以提取所需的信息。mwlib是BSD许可的。
刚刚偶然发现了一个关于PyPi的库,wikidump,它声称
Tools to manipulate and extract data from wikipedia dumps
我还没用呢,你自己试试吧。。。
我描述了如何使用pywikibot和this post中的mwparserfromhell(还没有足够的声誉来标记为副本)的组合来实现这一点。
别忘了params也是mwparserfromhell对象!
看起来您真的希望能够解析MediaWiki标记。有一个为此目的而设计的python库,名为mwlib。您可以使用python的内置XML包从API的响应中提取页面内容,然后将该内容传递到mwlib的解析器中,以生成一个对象表示,您可以在代码中浏览和分析该对象表示以提取所需的信息。mwlib是BSD许可的。
刚刚偶然发现了一个关于PyPi的库,wikidump,它声称
我还没用呢,你自己试试吧。。。
相关问题 更多 >
编程相关推荐