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

2024-04-26 05:38:57 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

但似乎没有办法把它变成明文。我使用的是pythonrequests。在


Tags: 命令行httpsorg程序api物种actionwikipedia
1条回答
网友
1楼 · 发布于 2024-04-26 05:38:57

我希望这有助于:

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'))

相关问题 更多 >