我们要爬取的是 2020东京奥运会奖牌榜。
右键单击网页,选择“检查”,调出开发者界面。然后点击右侧选项卡中的“网络”。
刷新网页,再出现的网络活动中寻找包含奥运会奖牌榜的活动。
点击“标头”,查看请求信息。
请求 url:https://api.cntv.cn/olympic/getOlyMedals
请求方式:get
import requests
url = 'https://api.cntv.cn/olympic/getOlyMedals'
params = {
'serviceId': 'pcocean',
'itemcode': 'GEN-------------------------------',
't': 'jsonp',
'cb': 'banomedals'
}
json = requests.get(url, params=params).json()
print(json)
但是我们会发现报错:
原因是解析 json 数据错误。说明我们获取到的并不是json格式信息。
打印出来看一下:
检查请求信息是否有误。
经过检查,我们发现请求信息中的 t 项和 cb 项去掉后就不会发生此错误。于是我们将 t: jsonp 和 cb: banomedals 这两项去掉。
更正后的版本:
import requests
url = 'https://api.cntv.cn/olympic/getOlyMedals'
params = {
'serviceId': 'pcocean',
'itemcode': 'GEN-------------------------------',
}
json = requests.get(url, params=params).json()
print(json)
然后,我们从得到的信息中获取我们需要的信息:
result = json['data']['medalsList']
for r in result:
print(r['rank'],
r['countryname'].ljust(10),
'金' + r['gold'],
'银' + r['silver'],
'铜' + r['bronze'],
'总' + r['count'])
成果:
成功!
点个赞,为中国运动员喝彩吧!
本人其他社交平台账号:
更多Python技术文章,欢迎交流讨论!