Python 如何使用WikipediaAPI获取侧边栏的部分?

Python 如何使用WikipediaAPI获取侧边栏的部分?,python,api,Python,Api,我有一个命令行程序,它以一个物种(e.x.Fusulinida)的名字传递。它需要返回侧栏中关于分类的部分的纯文本 我可以到达这里: 但似乎没有办法将其转换为明文。我正在使用python。我希望这有助于: import requests, json def getTaxonomy(title): r = requests.get('https://en.wikipedia.org/w/api.php?action=query&titles=' + title + '&

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

我可以到达这里:

但似乎没有办法将其转换为明文。我正在使用python。

我希望这有助于:

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'))
导入请求,json def getTaxonomy(标题): r=请求。获取('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=有孔虫 a='' t=json.loads(r.text) 对于t['query']['pages']中的i: 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(“
”,“) taxobox=taxobox.replace(“”,“”) taxobox=taxobox.replace(“,”) t=[] 对于taxobox.split中的i(“\n”): 如果len(i)>0: 如果i:#中的“|”用于href标题 t、 为href标题追加(i.split(“|”)[1])# 其他: t、 附加(i) 返回“\n”。加入(t) 打印(getTaxonomy(‘有孔虫’)) 打印(getTaxonomy('Fusulinida'))
我在第33行遇到一个错误,还有一个encode错误。这是为python 2编写的吗?我会在一分钟后重试。只需为每个返回的字符串调用encode方法,如下所示:print(getTaxonomy(‘有孔虫’).encode(“ascii”,“replace”))是否有用于此的库?