Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何加载维基百科文章的旧(修订版)内容_Python_Api_Urllib2_Wikipedia Api - Fatal编程技术网

Python 如何加载维基百科文章的旧(修订版)内容

Python 如何加载维基百科文章的旧(修订版)内容,python,api,urllib2,wikipedia-api,Python,Api,Urllib2,Wikipedia Api,我试图使用Python2.7对维基百科文章的内容如何随时间变化进行一些分析。我只对页面的内容感兴趣,发现最简单的方法就是使用。我的代码成功加载了一篇文章,然后我可以使用article.content函数进行分析 import Wikipdia # pull in wikipedia article name = 'George W. Bush' article = wikipedia.page(name) object = article.content # Do analysis here

我试图使用Python2.7对维基百科文章的内容如何随时间变化进行一些分析。我只对页面的内容感兴趣,发现最简单的方法就是使用。我的代码成功加载了一篇文章,然后我可以使用article.content函数进行分析

import Wikipdia

# pull in wikipedia article
name = 'George W. Bush'
article = wikipedia.page(name)

object = article.content
# Do analysis here
下面的代码(我从另一个堆栈交换问题中得到)查找我想要的所有修订历史记录。从中,我可以提取我需要的所有修订ID

site = wiki.Wiki("http://en.wikipedia.org/w/api.php")
names = ["Sherrod Brown","Maria Cantwell"]
allMembers = []
for name in labels:
     params = {'action':'query',
    'titles': name,
    'prop':'revisions',
    'rvprop':'ids|flags|timestamp|userid|user|size|comment|tags|minor',
    'rvlimit':'10'
}
req = api.APIRequest(site, params)
res = req.query(querycontinue=False)
allMembers.append(res)

# Write to a file and load it into a dictionary
with open('wiki-leg.json', 'w') as outfile:
     json.dump(allMembers, outfile, indent=2)

with open('wiki-leg.json') as data_file:    
    data = json.load(data_file)

从这里,我不知道如何获得相同的article.content()进行修订。我似乎无法用Wikipedia包完成这项工作,而使用urllib2并没有产生简单的文本解析结果。有没有办法获取维基百科文章的旧版本(修订版)的内容

我对维基百科图书馆不是很熟悉,但你想做什么似乎很容易。所以你需要同一页不同版本的文本,对吗?试试这个:

导入pywikibot
site=pywikibot.site(u“en”,fam=u“wikipedia”)
wpage=pywikibot.Page(站点,u“葡萄牙”)
wpHist=wpage.fullVersionHistory(总计=5)
对于wpHist中的i:
打印一[3]

在每次迭代中,您都会得到有关该修订版的信息。

我对维基百科库不太熟悉,但您想做什么似乎很容易。所以你需要同一页不同版本的文本,对吗?试试这个:

导入pywikibot
site=pywikibot.site(u“en”,fam=u“wikipedia”)
wpage=pywikibot.Page(站点,u“葡萄牙”)
wpHist=wpage.fullVersionHistory(总计=5)
对于wpHist中的i:
打印一[3]

在每次迭代中,您将获得有关该修订的信息。

要获取单个修订ID的页面内容,即您已经拥有修订ID,并且只想要该页面,而不是完整的历史记录,您可以使用
getOldVersion

import pywikibot

site = pywikibot.Site("en", "wikipedia")
page = pywikibot.Page(site, "George W. Bush")
revs = page.revisions(content=False, total = 10)
revs = list(revs)

# example
revs[9]['revid']

text = page.getOldVersion(oldid = revs[9]['revid'])
print(text)

一些上下文:获取一个包含数千次编辑的页面的完整历史记录可能需要一些时间,而对于我试图做的事情,我只需要一小部分修订。因此,在没有内容的情况下查询修订历史记录、识别我需要的修订ID,然后仅下载这些内容会更快

要获取单个修订ID的页面内容,即您已经拥有修订ID,并且只想要该页面,而不是完整的历史记录,您可以使用
getOldVersion

import pywikibot

site = pywikibot.Site("en", "wikipedia")
page = pywikibot.Page(site, "George W. Bush")
revs = page.revisions(content=False, total = 10)
revs = list(revs)

# example
revs[9]['revid']

text = page.getOldVersion(oldid = revs[9]['revid'])
print(text)
一些上下文:获取一个包含数千次编辑的页面的完整历史记录可能需要一些时间,而对于我试图做的事情,我只需要一小部分修订。因此,在没有内容的情况下查询修订历史记录、识别我需要的修订ID,然后仅下载这些内容会更快