【python作品】基于python实现的疫情实况可视化程序

项目场景:

基于2019年网络数据,通过网页爬虫获取、整理并可视化数据。


项目简介

首先,利用 Selenium 库和 Chrome 浏览器驱动程序获取了指定网页的特定元素内容;然后,利用 BeautifulSoup 库解析 HTML 内容,并提取出其中的表格数据;接着,利用 Matplotlib 库绘制了一个饼状图,展示了新冠肺炎在各国的占比情况,并将该图保存为 jpg 格式的图片;最后,使用 imageio 库将这些图片制作成了一个 GIF 动图,并保存在指定的路径下。

代码整体流程:获取网页内容 -> 解析表格数据 -> 绘制饼状图 -> 保存饼状图为图片 -> 制作 GIF 动图。

代码实现:

from selenium import webdriver
driver=webdriver.Chrome()
url="https://voice.baidu.com/act/newpneumonia/newpneumonia/?from=osari_pc_3#tab4"
xpath1="/html/body/div[2]/div/div/div/section/div[2]/div[3]/div[2]/div[11]/table/tbody/tr/td/table/tbody"
driver.get(url)
table1=driver.find_element_by_xpath(xpath1).get_attribute('innerHTML')
from bs4 import BeautifulSoup
soup=BeautifulSoup(table1,"html.parser")
table2=soup.find_all('tr')
data={} #创建空字典
i=0
else_value=0
for row in table2:
    cols=[col.text for col in row.find_all('td')]
    if i<6:
        data[cols[0]]=cols[2] #以国家为keys现有病例为values,添加到空字典
        i+=1
    else :
        else_value+=int(cols[2]) #第六之后的国家为else
data['其他国家']=else_value
xpath2="/html/body/div[2]/div/div/div/section/div[2]/div[1]/div[2]/div[1]/div[2]"
table3=driver.find_element_by_xpath(xpath2).get_attribute('innerHTML')
chinese_value=BeautifulSoup(table3,"html.parser").text
data['中国']=chinese_value
print(chinese_value)
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']='SimHei'
fig,ax=plt.subplots()
data_np=np.array(list(data.values())).astype(float) #饼图显示数据,转为float格式
explode=[0,0,0,0,0,0,0,0.1] #中国从图中提出
ax.pie(data_np,labels=data.keys(),autopct='%.lf%%',explode=explode)
ax.set_title('新冠肺炎各国占比饼状图')
ax.axis('equal')
import os
import re
filePath = 'C:/work'
names=os.listdir(filePath)#查找work下所有文件名称
str1=''.join(names)
pattern = re.compile('jpg')
num=len(pattern.findall(str1))#正则表达式统计已生成图像数量,用于命名
plt.savefig('C:/work/chart_%s.jpg'%num) 
``````c
import imageio
gif_images = []
for path in names:
    gif_images.append(imageio.imread(os.path.join(filePath,path)))
imageio.mimsave("C:/work/until_today.gif",gif_images,fps=1)#制作、保存动图
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值