点击上方“码农突围”,马上关注
这里是码农充电第一站,回复“666”,获取一份专属大礼包
真爱,请设置“星标”或点个“在看”
来源:水代码工作室
响应号召,宅在家里。修修小技术,水水小代码。加油!热干面!
首先我们假设Python的基本环境已经搭建好了,Let's begin。
一、爬取数据
1)安装常用的python爬虫工具:beautifulsoup4、requests
pip install requests
pip install beautifulsoup4
2)找一个数据源
在度娘上搜了搜,觉得腾讯的疫情实时追踪非常好。因为他非常友好的把疫情数据公开输出到了console中。
网址:https://news.qq.com/zt2020/page/feiyan.htm
我们在网站页面上单击鼠标右键,选择检查
图1 网站截图
选择Console,我们看到了什么,这是腾讯大大们抓取处理的所有数据,直接输出到了控制台中。我看可以看到JSON数据格式中:lastUpdateTime是数据的最新更新时间;chinaTotal中是目前的确诊数、疑似数、死亡数、治愈数;chinaDalyList中是1月13日至今的全国总数据;areaTree中是全国详细的数据。
图2 控制台输出截图
图3 areaTree中的全国数据
我们只需要国内的数据,所以只需要第0个children中的数据。
图4 areaTree中的国内数据
现在数据格式知道了,我们来切换到输出这些数据的intro_vp_trim.js脚本中看看这些数据是怎样来的。
图5 数据的获取
我们可以看到数据是从哪个接口获取的,那么我们只需要在Python中抓取这个接口返回的数据即可,事情变得非常简单了。
3)python抓取数据
import requestsimport jsonurl = 'https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5'data = json.loads(requests.get(url=url).json()['data'])china = data['areaTree'][0]['children']
现在国内的数据就全部在china变量中了,为了方便绘制地图,将各省份的数据提取出来备用。
data = []for i in range(len(china)): data.append([china[i]['name'],china[i]['total']['confirm']])
二、绘制地图
我们用pyecharts中的GEO来绘制地图,首先需要安装各种包。
pip install pyechartspip install echarts-countries-pypkgpip install echarts-china-provinces-pypkgpip install echarts-china-cities-pypkgpip install echarts-china-counties-pypkgpip install echarts-china-misc-pypkgpip install echarts-united-kingdom-pypkg
如果网速很慢,可以临时用国内的映像,例如:
pip install pyecharts -i http://mirrors.aliyun.com/pypi/simple/
pyecharts目前已经更新到了V1版本,并且与V0.5版本不兼容,也不再维护V0.5版本。我们直接用的是V1版本。
官方网站:https://pyecharts.org/
我们先导入必要的库
import requestsimport jsonfrom pyecharts.charts import Map, Geofrom pyecharts import options as optsfrom pyecharts.globals import GeoType,RenderType
用全国数据生成个副标题:
china_total = "确诊:"+ data['chinaTotal']['confirm'] + \ " 疑似:" + data['chinaTotal']['suspect'] + \ " 死亡:" + data['chinaTotal']['dead'] + \ " 治愈:" + data['chinaTotal']['heal'] + \ " 更新日期:" + data['lastUpdateTime']
设置GEO
geo = ( Geo(init_opts = opts.InitOpts(width="1200px",height="600px",bg_color="#404a59",page_title="全国疫情实时报告",renderer=RenderType.SVG,theme="white"))#设置绘图尺寸,背景色,页面标题,绘制类型 .add_schema(maptype="china",itemstyle_opts=opts.ItemStyleOpts(color="rgb(49,60,72)",border_color="rgb(0,0,0)"))#中国地图,地图区域颜色,区域边界颜色 .add(series_name="geo",data_pair=data,type_=GeoType.EFFECT_SCATTER)#设置地图数据,动画方式为涟漪特效effect scatter .set_series_opts(#设置系列配置 label_opts=opts.LabelOpts(is_show=False),#不显示Label effect_opts = opts.EffectOpts(scale = 6))#设置涟漪特效缩放比例 .set_global_opts(#设置全局系列配置 visualmap_opts=opts.VisualMapOpts(min_=0,max_=sum/len(data)),#设置视觉映像配置,最大值为平均值 title_opts=opts.TitleOpts(title="全国疫情地图", subtitle=china_total,pos_left="center",pos_top="10px",title_textstyle_opts=opts.TextStyleOpts(color="#fff")),#设置标题,副标题,标题位置,文字颜色 legend_opts = opts.LegendOpts(is_show=False),#不显示图例 ))
绘制到html文件
geo.render(path="./html/render.html")
效果预览
图6 效果截图
推荐阅读:
Python基础专题????
1、Python中的线程和进程2、Python多线程实战3、Python中数据深拷贝、浅拷贝4、Python中的作用域5、Python中的内存管理机制
Python爬虫和数据分析专题????
1、Python爬取某站上海租房图片2、Python爬取拉勾网数据并进行数据可视化3、Python爬虫小白入门-爬取披头士乐队历年专辑封面-网易云音乐4、Python动手分析天猫内衣售卖数据,得到你想知道的信息5、Python抓取猫眼近10万条评论并分析电影《一出好戏》到底如何?6、Python爬虫实战:利用scrapy,短短50行代码下载整站短视频7、Python 通过采集两万条数据,对《无名之辈》影评分析8、想不想知道充气娃娃到底什么感觉?来!我用Python告诉你9、Python爬虫:动态爬取QQ说说并生成词云,分析朋友状况
10、Python + PyQt5 实现美剧爬虫可视工具
11、Python爬取批量获取高清壁纸12、有趣的一个Python爬虫实例(爬取段子,笑话,情感句子)13、Python爬虫获取电子书资源实战14、面试官问我会用Python爬虫腾讯视频么?我是这样回复的...15、18个Python爬虫实战案例(已开源)16、Python爬虫44万条数据:如何成为网易云音乐评论区的网红段子手?17、深夜,我用Python爬取了整个斗图网站,不服来斗18、再推荐23个Python爬虫开源项目代码:微信、淘宝、豆瓣19、我用Python爬了点你们需要的电影,这些电影真的很不错~20、Python爬取抖音高颜值小姐姐视频
Python综合专题????
1、使用 Python 进行微信好友分析2、Python面试题37道(附答案)看完面试不愁了3、Python 利用opencv去除图片水印4、被女朋友三番两次拉黑后,我用 Python 写了个“舔狗”必备神器5、昨晚家里停网后,我动了邪念用Python破解了隔壁小姐姐的wifi密码6、东半球最强Python新手100天学习计划开源,这次再学不会算我输!7、向Excel说再见,神级编辑器统一表格与Python8、牛逼,竟然可以用 Python 操作 Word 文档,这么多的骚操作!
更多爬虫,关注“Python技术之巅”公号,后台回复:“爬虫实战”,获取独家整理的一份爬虫汇总。
长按二维码识别关注