代码:

  1. import requests
  2. import pymysql
  3. import json
  4. from pyecharts import options as opts
  5. from pyecharts.charts import Map
  6.  
  7. def create():
  8.  
  9. # 连接数据库
  10. db = pymysql.connect(host = 'localhost', user = 'root', password ='258000', database = 'yiqing',charset='utf8')
  11.  
  12. # 使用 cursor() 方法创建一个游标对象 cursor
  13. cursor = db.cursor()
  14.  
  15. # 使用 execute() 方法执行 SQL,如果表存在则删除
  16. cursor.execute("DROP TABLE IF EXISTS proyiqing")
  17.  
  18. # 使用预处理语句创建表
  19. sql = """CREATE TABLE proyiqing (
  20. Id INT PRIMARY KEY AUTO_INCREMENT,
  21. update_time varCHAR(255),
  22. provinse varchar(255),
  23. today_confirm varchar(255),
  24. total_confirm varchar(255),
  25. now_confirm varchar(255),
  26. total_dead varchar(255),
  27. total_heal varchar(255))"""
  28. #update_time,provinse,today_confirm,total_confirm,now_confirm,total_dead,total_heal
  29. cursor.execute(sql)
  30.  
  31. #关闭数据库连接
  32. db.close()
  33.  
  34. def insert(value):
  35.  
  36. # 连接数据库
  37. db = pymysql.connect(host = 'localhost', user = 'root', password ='258000', database = 'yiqing',charset='utf8')
  38.  
  39. # 使用 execute() 方法执行 SQL,如果表存在则删除
  40. cursor = db.cursor()
  41.  
  42. # 使用预处理语句插入数据
  43. sql = "INSERT INTO proyiqing(update_time,provinse,today_confirm,total_confirm,now_confirm,total_dead,total_heal) VALUES ( %s,%s,%s,%s,%s,%s,%s)"
  44. #update_time,provinse,today_confirm,total_confirm,now_confirm,total_dead,total_heal
  45.  
  46. try:
  47. cursor.execute(sql, value)
  48. db.commit()
  49. print('插入数据成功')
  50. except:
  51. db.rollback()
  52. print("插入数据失败")
  53. db.close()
  54.  
  55. create() # 创建表
  56.  
  57. #目标网站
  58. url = 'https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5'
  59. headers = {
  60. 'user-agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Mobile Safari/537.36'
  61. }
  62.  
  63. #请求资源,获取相应内容
  64. r = requests.get(url, headers)
  65.  
  66. # 将响应信息进行json格式化
  67. res = json.loads(r.text)
  68. data = json.loads(res['data'])
  69.  
  70. #世界疫情
  71. lists = ['截至时间:' + str(data['lastUpdateTime']) + '\n'
  72. '全国确诊人数:' + str(data['chinaTotal']['confirm']) + '\n'
  73. '今日新增确诊:' + str(data['chinaAdd']['confirm']) + '\n'
  74. '全国疑似:' + str(data['chinaTotal']['suspect']) + '\n'
  75. '今日新增疑似:' + str(data['chinaAdd']['suspect']) + '\n'
  76. '全国治愈:' + str(data['chinaTotal']['heal']) + '\n'
  77. '今日新增治愈:' + str(data['chinaAdd']['heal']) + '\n'
  78. '全国死亡:' + str(data['chinaTotal']['dead']) + '\n'
  79. '今日新增死亡:' + str( data['chinaAdd']['dead']) + '\n']
  80. result = ''.join(lists)
  81. with open('疫情查询.txt', 'w+', encoding="utf-8") as f:
  82. f.write(result + '\n')
  83.  
  84. #更新时间
  85. update_time = data['lastUpdateTime']
  86.  
  87. #保存全国各省现有确诊数据
  88. province_detals = []
  89. confirm_detals = []
  90.  
  91. #省份疫情
  92. for pro in data['areaTree'][0]['children']:
  93. provinse = pro["name"] #省名
  94. today_confirm = pro["today"]["confirm"]
  95. total_confirm = pro["total"]["confirm"]
  96. now_confirm = pro["total"]["nowConfirm"]
  97. total_dead = pro["total"]["dead"]
  98. total_heal = pro["total"]["heal"]
  99. province_detals.append(provinse)
  100. confirm_detals.append(now_confirm)
  101. #insert((update_time,provinse,today_confirm,total_confirm,now_confirm,total_dead,total_heal))#存入数据库
  102.  
  103. #建立一一对应关系
  104. data_zip = zip(province_detals,confirm_detals)
  105. data_list = list(data_zip)
  106.  
  107. #可视化 matplot 和 pyechart
  108. map = Map(opts.InitOpts(width='1900px',height='800px')).add(series_name="中国疫情分布",
  109. data_pair=data_list,#输入数据
  110. maptype="china",#地图类型
  111. is_map_symbol_show=False#显示标记
  112. )
  113.  
  114. #不显示国家名称
  115. map.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
  116.  
  117. #设置全局配置项
  118. map.set_global_opts(title_opts=opts.TitleOpts(title="中国疫情情况"),#设置图标题
  119. visualmap_opts=opts.VisualMapOpts(
  120. is_piecewise=True,
  121. pieces=[
  122. {"min":1,"max": 10},
  123. {"min": 10, "max": 20},
  124. {"min": 20, "max": 30},
  125. {"min": 30, "max": 40},
  126. {"min": 40, "max": 50},
  127. {"min": 50, "max": 60},
  128. {"min": 60, "max": 70},
  129. {"min": 70, "max": 80},
  130. {"min": 80, "max": 90},
  131. {"min": 90, "max": 100},
  132. {"min": 100}]
  133. )) #显示图例
  134. map.render("中国疫情分布情况.html")

效果:

Python:爬取全国各省疫情数据并在地图显示的更多相关文章

  1. 利用python爬取58同城简历数据

    利用python爬取58同城简历数据 利用python爬取58同城简历数据 最近接到一个工作,需要获取58同城上面的简历信息(http://gz.58.com/qzyewu/).最开始想到是用pyth ...

  2. 手把手教你使用Python爬取西刺代理数据(下篇)

    /1 前言/ 前几天小编发布了手把手教你使用Python爬取西次代理数据(上篇),木有赶上车的小伙伴,可以戳进去看看.今天小编带大家进行网页结构的分析以及网页数据的提取,具体步骤如下. /2 首页分析 ...

  3. python爬虫学习之爬取全国各省市县级城市邮政编码

    实例需求:运用python语言在http://www.ip138.com/post/网站爬取全国各个省市县级城市的邮政编码,并且保存在excel文件中 实例环境:python3.7 requests库 ...

  4. python爬取豆瓣电影信息数据

    题外话+ 大家好啊,最近自己在做一个属于自己的博客网站(准备辞职回家养老了,明年再战)在家里 琐事也很多, 加上自己 一回到家就懒了(主要是家里冷啊! 广东十几度,老家几度,躲在被窝瑟瑟发抖,) 由于 ...

  5. 告诉你那里最受欢迎,python爬取全国13个城市旅游数据

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http ...

  6. python 爬取猫眼电影top100数据

    最近有爬虫相关的需求,所以上B站找了个视频(链接在文末)看了一下,做了一个小程序出来,大体上没有修改,只是在最后的存储上,由txt换成了excel. 简要需求:爬虫爬取 猫眼电影TOP100榜单 数据 ...

  7. 一篇文章教会你用Python爬取淘宝评论数据(写在记事本)

    [一.项目简介] 本文主要目标是采集淘宝的评价,找出客户所需要的功能.统计客户评价上面夸哪个功能多,比如防水,容量大,好看等等. 很多人学习python,不知道从何学起.很多人学习python,掌握了 ...

  8. Python爬取网站上面的数据很简单,但是如何爬取APP上面的数据呢

  9. 利用python爬取全国水雨情信息

    分析 我们没有找到接口,所以打算利用selenium来爬取. 代码 import datetime import pandas as pd from bs4 import BeautifulSoup ...

随机推荐

  1. a 标签 href 失效 和ajax的类型

    Jquery Ajax type的4种类型   Ajax type这个里面填什么呢?通常大家都会说get和post.那么还有2个是什么呢 $.ajax({ url: 'http://www.cnblo ...

  2. php 23种设计模型 - 模板方法模式

    模板模式 模板模式准备一个抽象类,将部分逻辑以具体方法以及具体构造形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑.不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现.先制 ...

  3. egg中使用sequelize事务,实现原子性

    let transaction; try { // 建立事务对象 transaction = await this.ctx.model.transaction(); const house = awa ...

  4. 从零开始,开发一个 Web Office 套件(9):拖动鼠标选中文字 Edge Case

    这是一个系列博客,最终目的是要做一个基于 HTML Canvas 的.类似于微软 Office 的 Web Office 套件(包括:文档.表格.幻灯片--等等). 博客园:<从零开始, 开发一 ...

  5. LOTO新型号支持串口蓝牙示波器

    LOTO串口/蓝牙示波器面世 LOTO一直专注在虚拟示波器领域,以USB虚拟示波器为基础,扩展了很多功能模块,可以把Windows示波器,信号源,逻辑分析仪,频谱分析,数据记录,安卓手机平板支持,隔离 ...

  6. CF594D题解

    我不会数据结构/kk 我想题意应该十分清楚了. 我们知道 \(\varphi(p^k)=p^{k-1}(p-1)\),那么我们考虑将一个询问下放到右端点,然后往右移动右端点并更新每个左端点到右端点的答 ...

  7. CodeGym-17~20

    读文章 0.如果是基本数据类型的话,在数组中就存储特定的值:如果是对象的话,在数组中就是存储对象的引用. 1.数组本身就是对象 再读文章 0.Arrays.sort(array); Arrays.to ...

  8. php——新闻项目改写

    主要思路:遵守java开发规范,保持接口一致性 如何保持接口的一致性: (1).url的一致性:使用@RequestingMapping注解 (2).参数的一致性: 使用@ReuqestParam注解 ...

  9. linux如何通过文件2,3找回文件1?

    查看系统是否有diff,patch命令 diff一般系统自带 patch下载 (yum install patch -y) 现在开始演示 我的系统里有1和2两个文件 使用 diff 1 2 > ...

  10. python 命令行参数学习(一)

    用了这么久,还没怎么学习python的命令行参数,是在惭愧. 参考文章地址:http://www.cnblogs.com/jianboqi/archive/2013/01/10/2854726.htm ...