我想从特定的Wikipedia网站(主要是国家/地区)提取信息框中的信息。具体而言,如果可能的话,我希望在不使用Python
+ BeautifulSoup4
或任何其他语言+库的情况下使用官方API来实现此目的,因为我注意到不同Wikipedia网站的CSS标记不同(与其他语言不同) 。如何使用MediaWiki API从(德语)维基百科中提取信息框?
在How to get Infobox from a Wikipedia article by Mediawiki API?中指出,使用以下方法可以工作,这对给定的诊所(Scary Monsters and Nice Sprites
)确实如此,但不幸的是,在我尝试使用的页面上(下面会进行)无效。
http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=xmlfm&titles=Scary%20Monsters%20and%20Nice%20Sprites&rvsection=0
不过,我想Wikimedia
改变了他们infobox
模板,因为当我运行上面的查询我得到的是内容,而不是infobox
。例如。下面的代码片段上Europäische_Union
(European_Union)运行的结果(其中包括)查询
{{Infobox Europäische Union}}
<!--{{Infobox Staat}} <- Vorlagen-Parameter liegen in [[Spezial:Permanenter Link/108232313]] -->
它工作正常的英文版维基百科虽然。
所以我要提取的信息框的页面从将是:http://de.wikipedia.org/wiki/Europäische_Union
,这是代码我使用:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
import lxml.etree
import urllib
title = "Europäische_Union"
params = { "format":"xml", "action":"query", "prop":"revisions", "rvprop":"content", "rvsection":0 }
params["titles"] = "API|%s" % urllib.quote(title.encode("utf8"))
qs = "&".join("%s=%s" % (k, v) for k, v in params.items())
url = "http://de.wikipedia.org/w/api.php?%s" % qs
tree = lxml.etree.parse(urllib.urlopen(url))
revs = tree.xpath('//rev')
print revs[-1].text
我缺少的东西很可观?
[如何从维基百科获取信息框数据?](http://stackoverflow.com/questions/3312346/how-to-get-the-infobox-data-from-wikipedia) – Termininja 2016-12-09 19:43:27