东京奥运会奖牌榜爬虫

  • 通过手机浏览器实时查看奥运会奖牌信息
  • 将手机浏览器访问的地址复制,通过计算机浏览器访问
    • 打开谷歌浏览器的开发者工具,切换到network选项卡,刷新页面重新请求。
    • 拖动滚动条,找到具体获取本届奥运会的请求
    • 复制该请求,直接用浏览器访问
    • 使用在线json解析工具,简单解析
  • 数据爬取和解析
    • 数据爬取
    • 解析金牌榜信息
    • 提取金牌榜信息
    • 选择金牌榜前10国家和金牌数并封装数据
    • 绘制饼图

正值东京奥运会期间,除了为奥运健儿们加油,被他们“更高、更快,更强,更团结”的拼搏精神所折服外,作为一个热血青年,其实想更多地了解中国奥运天团一路走来的历史。所以,就让我用简单的数据爬取和分析来一次时空的旅行,探索被掩盖在数据下的故事。

今天就先来了解2020东京奥运会的相关情况吧。

通过手机浏览器实时查看奥运会奖牌信息

将手机浏览器访问的地址复制,通过计算机浏览器访问

访问地址:

https://m.sports.qq.com/ssr-html/olympic-tokyo-rank.htm

打开谷歌浏览器的开发者工具,切换到network选项卡,刷新页面重新请求。

拖动滚动条,找到具体获取本届奥运会的请求

复制该请求,直接用浏览器访问

请求地址为:

https://app.sports.qq.com/tokyoOly/medalsList?from=h5

使用在线json解析工具,简单解析

在线json工具:

https://www.daimadog.com/json

将复制好的json数据直接复制到在线解析工具的输入框中,点击格式化:

通过简单的解析,知道获取对象结构后,就可以使用Python进行数据爬取和解析了。

数据爬取和解析

数据爬取

import requestsurl = 'https://app.sports.qq.com/tokyoOly/medalsList?from=h5'text = requests.get(url).json()print(text)

解析金牌榜信息

#查看数据类型:字典类型
print(type(text))#通过键值对访问得到
l = text["data"]["data"]["total"]
print(l)

提取金牌榜信息

#查看有多少国家获得奖牌
print(len(l))
#查看国家或地区名称
print(l[0]["nocName"])#遍历读取每个国家获取的奖牌数
strs = []#存储文本
imgs = []#存储图片链接
r = 1#金牌榜排名计数
for i in l:    m = {}#通过format格式化,得到想要的信息串s = "{}位列金牌榜第{}位,获取了{}块金牌,{}块金牌,{}块金牌,共计{}块奖牌。".format(i["nocName"],r,i["gold"],i["silver"],i["bronze"],i["total"])print(s)r=r+1imgUrl= i["nocUrl"]print(imgUrl)#imName="%s.jpg"%(i["nocName"])#将国家或地区名及国旗图片地址保存在map中m[i["nocName"]]=imgUrl#分别追加在列表中strs.append(s)imgs.append(m)

选择金牌榜前10国家和金牌数并封装数据

#饼图可视化金牌榜前十国家及地区占比总金牌数
#金牌总数
total = 0
for i in l:total += int(i["gold"])#金牌榜前十
top10=[]
top10Total = 0
print("国家和地区名\t金牌数")
for i in range(0,10):top10Total += int(l[i]["gold"])top10.append([l[i]["nocName"],int(l[i]["gold"])])print(l[i]["nocName"],"\t\t",l[i]["gold"])
top10.append(["其他",total-top10Total])
print("金牌总数%d"%total)
print("第10位以后金牌数%d"%(total-top10Total))#分别将国家及地区名和金牌数封装在列表中
Type=[]
Rate=[]
for a in top10:Type.append(a[0])Rate.append(a[1])

绘制饼图

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl#导入设置库,对可视化图形直接设置字体及大小
from matplotlib import rcParams
mpl.rcParams['font.family'] = 'simhei'
mpl.rcParams['font.size']=15#饼图可视化方法
def pie(x,y):# make a square figureplt.figure(1, figsize=(6,6))# For China, make the piece explode a bitexpl = [0,0.1,0,0,0,0,0,0,0,0,0]   #第二块即China离开圆心0.1# Colors used. Recycle if not enough.colors  = ["blue","red","coral","green","yellow","orange"]  #设置颜色(循环显示)# Pie Plot# autopct: format of "percent" string;百分数格式plt.pie(y, explode=expl, colors=colors, labels=x, autopct='%1.1f%%',pctdistance=0.8, shadow=True)plt.title('东京奥运会金牌榜前十', bbox={'facecolor':'0.8', 'pad':5})#建议先保存图片再显示,调换顺序的话,图片生成后是空白的。plt.savefig("pie.png")plt.show()plt.close()# Rate: 金牌数
# Type: 国家及地区名#调用方法
pie(Type,Rate)


(Jupiter版源码下载)

数据爬虫及可视化——东京奥运会奖牌榜相关推荐

  1. 可视化|东京奥运会可视化(一)

    文章目录 1 数据来源 1.1 东京奥运会官网 1.2 咪咕视频东京奥运会数据接口 2 可视化工具 3 可视化过程 3.1 奖牌榜可视化 3.1.1 数量可视化 1. TOP20国家的金银铜数量堆叠柱 ...

  2. 可视化|东京奥运会可视化(二)

    文章目录 3.2 运动员可视化 3.2.1 数量可视化 1. 按国家奥委会聚合矩形树图 2. 按赛事类型聚合矩形树图 3.2.2 地理可视化 1. 各国运动员分布地图 3.2.3 比例可视化 1. 各 ...

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

    需求分析 我们要爬取的是 2020东京奥运会奖牌榜. (截至 2021/8/2 下午 17:30) 右键单击网页,选择"检查",调出开发者界面.然后点击右侧选项卡中的"网 ...

  4. 基于Python的疫情数据爬虫及可视化

    资源下载地址:https://download.csdn.net/download/sheziqiong/85620226 python 基础语法的学习 系统的学习了 python 中的循环,分支,条 ...

  5. 基于Python股票网站数据爬虫情感可视化分析设计

    开发软件:Pycharm  开发环境: Python3.6 开发技术:Requests,Pandas,numpy,csv,Matplotlib,SnowNLP,seaborn (1)getData爬取 ...

  6. 数据爬取东京奥运会获得奖牌国家及地区旗帜图片

    目录 旗帜图片链接 从列表中取出文字和对应旗帜链接 将图片通过链接请求保存在本地(img文件夹需提前创建好) 通过for循环遍历取出所有国家及地区的旗帜 通过爬虫获取旗帜链接URL,爬虫代码详情见:数 ...

  7. 【2020东京奥运会】奥运榜单以及各国参赛运动员数据可视化~

    项目 本文中的代码是基于notebook写的,可以访问https://www.heywhale.com/mw/project/61015e73aca24600179ec778获取完整notebook. ...

  8. Pyecharts“可视化大屏“,带你重温 “2020东京奥运会“,不看直播尽知其事!

    本文禁止其他人转载,违者必究! 目录   1.项目背景   2.奥运会相关信息爬取    ① 导入相关库    ② 爬虫代码完整讲解   3.数据预处理    ① 数据替换    ② 数据分组     ...

  9. Python制作可视化大屏(东京奥运会)

    目录 文章目录 前言 一.数据爬取 二.数据预处理 三.Pyecharts可视化 3.1 2020东京奥运会各国金牌分布图 3.2 2020东京奥运会奖牌榜详情 3.3 2020东京奥运会中国各项目获 ...

最新文章

  1. linux的core文件认识
  2. 【JetPack】kotlin-android-extensions 插件 ( 视图绑定简单用法 )
  3. WebApi_基于Token的身份验证——JWT
  4. python—类和对象之浅拷贝和深拷贝详细讲解
  5. python创建方法draw_Python做图像处理(五)---ImageDraw综合应用实例:自制验证码...
  6. python名词同义词只替换2个_用同义词替换句子中的每个单词的Python程序
  7. 【windows】python打包后多进程引发的无限循环启动
  8. input 输入时间html,HTML “input time小时分钟”输入控件简介说明
  9. 小说阅读软件 java代码_小说阅读器源代码java程序
  10. matlab与无网格,无网格法
  11. 现代ADC中采样率往往远低于输入信号带宽
  12. 基于C#的ico图标制作与应用
  13. linux 蓝牙 iphone,Linux On iPhone 7 现在可运行 Wayland
  14. 设置域名跳转的几种方式
  15. 计算机网络体系结构中协议和服务的差别,第3章 计算机网络体系结构及协议 -4-2...
  16. PKUSC 2022游记
  17. angular : 自定义组件双向绑定 [(ngModel)]
  18. 小伙获25位美国总统签名 价值数百万(图)
  19. win7正版微软给你
  20. Pr:抠像与视频合成

热门文章

  1. 电信网管中的Java客户端(二)
  2. 信息安全-访问控制技术原理与应用
  3. Vue2/3 脚手架搭建
  4. Lwip协议详解(基于Lwip 2.1.0)-ICMP协议 (未完待续)
  5. 从EJB3中访问资源的5种方式
  6. 谁在使用Linux?
  7. 【资源分享】综合性的导航网站
  8. 数据驱动:大众点评精准化营销实践
  9. 中国金色系列珠光颜料市场深度研究分析报告
  10. sql server 获取当前日期所在得周一和周日