Python爬虫实战,requests+pyecharts模块,Python实现新冠疫情数据可视化(附源码)

news2025/1/10 22:40:26

前言

今天给大家介绍的是Python爬取新冠疫情数据并实现数据可视化,在这里给需要的小伙伴们代码,并且给出一点小心得。

首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是这样的纯文本数据爬取的人会很多,所以我们需要考虑更换代理IP和随机更换请求头的方式来对招聘网站数据进行爬取。

在每次进行爬虫代码的编写之前,我们的第一步也是最重要的一步就是分析我们的网页。

通过分析我们发现在爬取过程中速度比较慢,所以我们还可以通过禁用谷歌浏览器图片、JavaScript等方式提升爬虫爬取速度。

开发工具

Python版本: 3.8

相关模块:

requests模块

lxml模块

openpyxl模块

pandas模块

pyecharts模块

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

思路分析

浏览器中打开我们要爬取的页面
按F12进入开发者工具,查看我们想要的疫情数据在哪里
这里我们需要页面数据就可以了

源代码结构

代码实现

Epidemic crawler.py

import requests
from lxml import etree
import json
import openpyxl

#通用爬虫
url = 'https://voice.baidu.com/act/newpneumonia/newpneumonia'
headers = {
    "User-Agent": "换成自己浏览器的"
 }
response = requests.get(url=url,headers=headers).text
 #在使用xpath的时候要用树形态
html = etree.HTML(response)
 #用xpath来获取我们之前找到的页面json数据  并打印看看
json_text = html.xpath('//script[@type="application/json"]/text()')
json_text = json_text[0]
print(json_text)


#用python本地自带的库转换一下json数据
result = json.loads(json_text)
print(result)
#通过打印出转换的对象我们可以看到我们要的数据都要key为component对应的值之下,所以现在我们将值拿出来
result = result["component"]
#再次打印看看结果
print(result)
#获取国内当前数据
result = result[0]['caseList']
print(result)


#创建工作簿
wb = openpyxl.Workbook()
#创建工作表
ws = wb.active
#设置表的标题
ws.title = "国内疫情"
#写入表头
ws.append(["省份","累计确诊","死亡","治愈"])
#获取各省份的数据并写入
for line in result:
     line_name = [line["area"],line["confirmed"],line["died"],line["crued"]]
     for ele in line_name:
         if ele == '':
             ele = 0
     ws.append(line_name)
 #保存到excel中
wb.save('./china.xls')

User-Agent如何获取

在这里插入图片描述

遇到的问题Excel xlsx file; not supported解决办法

原因:xlrd1.2.0之后的版本不支持xlsx格式,支持xls格式

办法一:

卸载新版本 pip uninstall xlrd

安装老版本:pip install xlrd=1.2.0 (或者更早版本)

方法二:

将xlrd用到的excel版本格式修改为xls(保险起见,另存为xls格式)

疫情数据结果展示

疫情数据

Visualization.py

 #可视化部分
import pandas  as pd
from pyecharts.charts import Map,Page
from pyecharts import options as opts

#设置列对齐
pd.set_option('display.unicode.ambiguous_as_wide', True)
pd.set_option('display.unicode.east_asian_width', True)
#打开文件
df = pd.read_excel('china.xls')
#对省份进行统计
data2 = df['省份']
data2_list = list(data2)
data3 = df['累计确诊']
data3_list = list(data3)
data4 = df['死亡']
data4_list = list(data4)
data5 = df ['治愈']
data5_list = list(data5)

c = (
    Map()
       .add("治愈", [list(z) for z in zip(data2_list, data5_list)], "china")
      .set_global_opts(
         title_opts=opts.TitleOpts(),
         visualmap_opts=opts.VisualMapOpts(max_=200),
     )
)
c.render()

Cumulative = (
     Map()
     .add("累计确诊", [list(z) for z in zip(data2_list, data3_list)], "china")
        .set_global_opts(
       title_opts=opts.TitleOpts(),
        visualmap_opts=opts.VisualMapOpts(max_=200),
    )
)
 
death = (
    Map()
      .add("死亡", [list(z) for z in zip(data2_list, data4_list)], "china")
     .set_global_opts(
        title_opts=opts.TitleOpts(),
        visualmap_opts=opts.VisualMapOpts(max_=200),
     )
)
 
cure = (
     Map()
        .add("治愈", [list(z) for z in zip(data2_list, data5_list)], "china")
         .set_global_opts(
      title_opts=opts.TitleOpts(),
      visualmap_opts=opts.VisualMapOpts(max_=200),
    )
)
 
page = Page(layout=Page.DraggablePageLayout)
page.add(
          Cumulative,
          death,
          cure,
)
#先生成render.html文件
page.render()

疫情数据数据可视化

疫情数据可视化

最后

为了感谢读者们,我想把我最近收藏的一些编程干货分享给大家,回馈每一个读者,希望能帮到你们。

里面有适合小白新手的Python实战教程给到大家~

快来和小鱼一起成长进步吧!

① 100+多本PythonPDF(主流和经典的书籍应该都有了)

② Python标准库(最全中文版)

③ 爬虫项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/76671.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

牛客网Mysql题目-SQL进阶篇 SQL 126-155

前言 这篇是进阶sql题目的记录,由于上一篇文章已经写将近一万字,有点长,就把剩下的再开一篇,免得总是重新发布 SQL126 平均活跃天数和月活人数 本题目要求统计,并且是多行,就需要使用group by查询 首先需…

kafka可靠性保证

1、概念 创建Topic的时候可以指定--replication-factor 3 ,表示分区的副本数,不要超过broker的数量。Leader是负责读写的节点,而其他副本则是Follower。Producer只把消息发送到Leader,Follower定期地到Leader上Pull数据。ISR是Le…

基于CNN-GRU-Attention混合神经网络的负荷预测方法(Python代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

[附源码]计算机毕业设计的家政服务平台Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Linux系统(Centos7)了解DNS服务

配置与管理DNS服务器 项目导入 某高校组建了校园网,为了使校园网中的计算机简单快捷地访问本地网络及Intemet上的资源,需要在校园网中架设 DNS 务器,用来实现将域名转换成IP地址的功能。在完成该项目之前,首先应当确定网络中D…

基于多目标优化算法的电力系统分析(Matlab代码实现)

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥 🎉作者研究:🏅🏅🏅主要研究方向是电力系统和智能算法、机器学…

Volatile关键字的作用

专栏链接:多线程相关知识详解 编译器有优化功能,会对写好的代码进行优化,在多线程里面可能就会对代码的执行逻辑进行修改,就可能会产生bug 例如下面这个代码: import java.util.Scanner;class Counter{public static int count 0; }public class Demo {public static void …

RK3568平台开发系列讲解(系统优化篇)系统卡顿了怎么办

🚀返回专栏总目录 文章目录 一、卡顿问题分析指标二、Android 卡顿排查工具沉淀、分享、成长,让自己和他人都能有所收获!😄 📢对用户来说,内存占用高、耗费电量、耗费流量可能不容易被发现,但是用户对卡顿特别敏感,很容易直观感受到。另一方面,对于开发者来说,卡顿…

windows vs2019 编译glib2

1、安装meson pip install meson 确认是否安装成功,命令行输入: meson --version 0.60.0 2,安装ninja 先下载ninja:Releases ninja-build/ninja GitHub 加压后,把ninja.exe所在目录加入环境变量 确认是否安装成功&#xf…

英文外链怎么做效果好?

google英文外链怎么做效果好? 答案是:建设GPB外链 正确的外链建设行为追求的是高质量的外链。 对于高质量外链的定义:优质的外链是来自搜索引擎和搜索者都信任的权威网站,网站越值得信赖、越权威,链接质量就越好 网…

【ElementUI】树形控件 el-tree

目录 公共参数 基础用法 最后一层不可选择 思路一:第三层设置disable 思路二:利用样式隐藏掉第三层的选框 最后一层展示复选框 转载请注明:宾果的救星的博客_CSDN博客 公共参数 treeContent:[{name: 1,id: 1,level: 1,children: [{na…

HPPH偶联金属/小分子抑制剂/上转换纳米颗粒/点击化学/核壳磁性纳米粒子的方法

小编这里分享了科研内容HPPH偶联金属/小分子抑制剂/上转换纳米颗粒/点击化学/核壳磁性纳米粒子的方法,来看! 点击输入图片描述(最多30字) 制备光敏剂HPPH的方法: (1) 叶绿素-a的提取;(2)脱镁叶绿酸-a甲酯的制备;(3)焦…

ADI Blackfin DSP处理器-BF533的开发详解20:4.3寸LCD液晶屏的设计与应用(含源码)

硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 功能介绍 ADSP-EDU-BF53x 开发板上的液晶屏为 480*272 尺寸真彩 TFT 液晶屏,其型号为 WXCAT43-TG3#001R。 WXCAT43-TG3#001R 为 24B…

C#开发如何加载64位版本易景地球 EviaEarth的三维控件

易景地球6.1.x后续的版本不再出32位的系统,只有64位版本的系统。 在c#开发中,form又如何将EviaEarth三维视窗控件放到上去呢? 有办法 以vs2019开发环境为例,新建工程后,添加引用文件:AxInterop.EviaEart…

小白Vue3+Nginx实现部署

文章目录前言一、搭建vue31、查看vue/cli版本,确保vue/cli版本在4.5.0以上2、如果版本达不到,安装或升级你的vue/cli3、创建4、启动可能出现的问题:vue : 无法加载文件 D:\NodeJS\node_global\vue.ps1,因为在此系统上禁止运行脚本。解决办法第…

[基因遗传算法]进阶之三:实践CVRP

实践CVRP 参考资料:《实现VRP常见求解算法——遗传算法(GA)》 属于该篇文章的解读 文章目录实践CVRPA. 定义三个classB.读取数据,打造初始属性卡C. 路线规划D. 生成解的初始空间(初代种群)D. 计算每个路段route的距离E. 计算适应度F.物竞天择F.交叉G.变…

程序员高收入的职业发展方向了解一下

做程序员简单吗?简单! 做高收入的程序员简单吗?不简单! 作为一名程序员,不论是刚出社会的小白,还是技术实力深厚的经验人士,最重要的是要找到适合自己的职业发展方向。 本位就为大家介绍一下程…

微服务框架 SpringCloud微服务架构 28 数据同步 28.2 导入酒店管理项目

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构28 数据同步28.2 导入酒店管理项目28.2.1 案例28 数据同步 28.2 导入酒店…

[附源码]计算机毕业设计健身房信息管理Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

RK3588平台开发系列讲解(SPI篇)SPI内核配置及驱动使用

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、RK3588功能特点二、内核软件2.1、代码路径2.2、SPI 设备配置 —— RK 芯片作 Master 端2.3 、SPI 设备配置 —— RK 芯片作 Slave 端2.4、SPI 设备驱动介绍三、常见问题3.1、SPI 无信号3.2、延迟采样时钟配置方案沉…