Python 爬取东京奥运会奖牌榜!中国原来这么牛逼!

平台框架 0 1482
新智AI
新智AI 2021年7月28日 22:30 发表
摘要:我们要爬取的是 2020东京奥运会奖牌榜。

需求分析

我们要爬取的是 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技术文章,欢迎交流讨论!


点赞 1 收藏(1)    分享
相关标签: Python
问题没解决?让chatGPT帮你作答 智能助手
0 个评论
  • 消灭零评论