【问题标题】:How to load the content of an old (revision) of a Wikipedia article如何加载维基百科文章的旧(修订版)内容
【发布时间】:2015-11-02 07:16:55
【问题描述】:

我正在尝试使用 Python 2.7 对 Wikipedia 文章的内容如何随时间变化进行一些分析。我只对页面的内容感兴趣,发现最简单的方法是使用Wikipedia package。我的代码成功加载了一篇文章,然后我可以使用 article.content 函数进行分析。

import Wikipdia

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

object = article.content
# Do analysis here

以下代码(我从另一个 Stack Exchange 问题中获得)查找我想要的所有修订历史记录。从中我可以提取我需要的所有修订 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 并没有为文本解析产生简单的结果。有没有办法获取维基百科文章的旧版本(修订)的内容?

【问题讨论】:

    标签: python api urllib2 wikipedia-api


    【解决方案1】:

    我对 wikipedia 库不是很熟悉,但使用 pywikibot 似乎很容易做到。所以你需要来自同一页面不同版本的文本,对吧?试试这个:

    import pywikibot
    
    site = pywikibot.Site(u"en", fam=u"wikipedia")
    wpage = pywikibot.Page(site, u"Portugal")
    
    wpHist = wpage.fullVersionHistory(total=5)
    for i in wpHist:
        print i[3]
    

    在每次迭代中,您都会获得有关该版本的信息。

    【讨论】:

      【解决方案2】:

      要获取单个修订 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,然后仅下载这些内容会更快。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-31
        • 1970-01-01
        • 1970-01-01
        • 2018-03-22
        相关资源
        最近更新 更多