如何使用Wikipedia API获取侧栏的部分?

时间:2015-10-25 20:43:23

标签: python api

我有一个以物种名称(e.x. Fusulinida)传递的命令行程序。它需要返回关于分类标准的侧栏部分的明文。

我可以到这里来: https://en.wikipedia.org/w/api.php?action=query&titles=Foraminifera&prop=revisions&rvprop=content&rvsection=0

但似乎没有办法将其变成明文。我正在使用python requests

1 个答案:

答案 0 :(得分:2)

我希望这会有所帮助:

import requests, json

def getTaxonomy(title):
    r = requests.get('https://en.wikipedia.org/w/api.php?action=query&titles=' + title  + '&prop=revisions&rvprop=content&rvsection=0&format=json')

    #https://en.wikipedia.org/wiki/Special:ApiSandbox#action=query&prop=revisions&format=json&rvprop=content&rvsection=0&rvcontentformat=text%2Fx-wiki&titles=Foraminifera

    a = ''
    t = json.loads(r.text)
    for i in t['query']['pages']:
        a = t['query']['pages'][ i ]['revisions'][0]['*']

    taxobox = axobox = a[a.upper().index('{{TAXOBOX') + len('{{taxobox'):]
    taxobox = taxobox[taxobox.index("\n[["):]
    taxobox = taxobox[:taxobox.index("}}")]

    taxobox = taxobox.replace('[[','')
    taxobox = taxobox.replace(']]','')
    taxobox = taxobox.replace('<br>','')
    taxobox = taxobox.replace("''",'')
    taxobox = taxobox.replace("&nbsp;",' ')

    t = []
    for i in taxobox.split("\n"):
        if len(i) > 0:
            if '|' in i:                    # for href titles
                t.append( i.split('|')[1] ) # for href titles
            else:
                t.append( i )

    return "\n".join(t)

print(getTaxonomy('Foraminifera'))
print(getTaxonomy('Fusulinida'))