Advertisement

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

阅读量:

需求分析

我们要爬取的是 2020东京奥运会奖牌榜
(截至 2021/8/2 下午 17:30)
在这里插入图片描述

右键单击网页,选择“检查”,调出开发者界面。然后点击右侧选项卡中的“网络”。
在这里插入图片描述

刷新网页,再出现的网络活动中寻找包含奥运会奖牌榜的活动。
在这里插入图片描述

点击“标头”,查看请求信息。
在这里插入图片描述

请求 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'])
    
    
      
      
      
      
      
      
      
      
      
    

成果:
在这里插入图片描述

成功!

点个赞,为中国运动员喝彩吧!

推荐阅读


yeanky
2021/7/27

全部评论 (0)

还没有任何评论哟~