Python 如何使用WikipediaAPI获取侧边栏的部分?
我有一个命令行程序,它以一个物种(e.x.Fusulinida)的名字传递。它需要返回侧栏中关于分类的部分的纯文本 我可以到达这里: 但似乎没有办法将其转换为明文。我正在使用python。我希望这有助于: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 + '&
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(" ",' ')
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”))是否有用于此的库?