您好我正在尝试构建一个简单的维基百科报废工具,它可以让我分析文本并使用python构建一个人生活中事件的时间轴。我在网上搜索可能的方法,直到现在我已经能够使用BeautifulSoup和urllib2检索数据。到目前为止,代码看起来像这样:
from bs4 import BeautifulSoup
import urllib2
import re
import nltk
import json
#get source code of page (function used later)
def fetchsource(url):
source = urllib2.urlopen(url).read()
return source
if __name__=='__main__':
#url = "http://en.wikipedia.org/w/index.php?action=raw&title=Tom_Cruise" #works
url="http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=xml&&titles=Tom_Cruise" #works
print url
source = fetchsource(url)
soup = BeautifulSoup(source)
print soup.prettify()
现在虽然我可以使用它,但我得到的输出有点难以解析,我只是想问是否有更好的方法或可能更易于管理的语法,我可以检索数据。 请发表评论。
答案 0 :(得分:6)
您还可以使用pywikipediabot获取文章wikitext。例如,要获得Tom Cruise的wiki文本,就像在您的示例中一样,您可以使用:
import wikipedia
page = wikipedia.Page(wikipedia.getSite(), 'Tom_Cruise')
pageText = page.get()
print pageText
通过这种方式,您可以尝试从模板中获取数据,并且如果需要,还有一些wikitext解析器。
答案 1 :(得分:2)
从html页面中提取数据永远不会有趣,但http://scrapy.org/让我觉得更容易。您可以使用XPath来提取数据,这非常强大。如果你想以这种方式检索数据,我肯定会使用scrapy。
您还应该检查是否有其他选项来获取数据。据我所知,可以下载维基百科的数据转储。对于您的用例而言可能有些过分,但可能存在其他API。
答案 2 :(得分:2)
DBpedia允许通过查询检索维基百科中的结构化信息。 http://dbpedia.org/