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

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

今天就先来了解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 requests

url = '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+1
    imgUrl= 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 figure
    plt.figure(1, figsize=(6,6))
    # For China, make the piece explode a bit
    expl = [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
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python数据爬虫可视化一般包含以下实验步骤: 1. 确定数据来源:首先需要确定需要爬取数据的来源,可以是网页、API接口、数据库等。根据数据来源的不同,选择相应的爬虫工具和技术。 2. 制定爬虫计划:明确需要爬取数据类型和量,并制定相应的爬虫计划。包括确定爬虫的起始链接,设置爬取的深度或页数,确定需要提取的内容等。 3. 编写爬虫代码:使用Python编程,根据爬虫计划编写爬虫代码。常见的爬虫框架和库有Scrapy、BeautifulSoup、Selenium等,可以根据需求选择合适的工具。 4. 数据提取和清洗:通过爬虫代码获取到的数据一般需要经过提取和清洗才能使用。使用正则表达式、XPath、CSS选择器等技术从HTML或JSON数据中提取需要的内容,并进行清洗和规范化。 5. 数据存储:将清洗好的数据存储到本地文件或数据库中,以备后续分析和可视化使用。常用的数据库包括MySQL、MongoDB等,也可以使用Excel或CSV格式的文件进行存储。 6. 数据可视化:使用Python中的可视化库(如Matplotlib、Seaborn、Plotly等)对爬取到的数据进行可视化分析。根据需要生成各种图表(如柱状图、折线图、散点图等),对数据进行探索和展示。 7. 结果展示:将生成的图表嵌入到网页、报告或演示文稿中,以便于展示和分享。可以使用Python的web框架(如Flask、Django等)制作数据可视化的网页应用。 总之,Python数据爬虫可视化的实验步骤涉及从数据来源选择、爬虫计划制定,到爬虫代码编写、数据提取和清洗,再到数据存储和可视化,最后结果展示等多个方面。通过这些步骤,可以实现对特定数据爬取、提取和可视化分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值