• 【Python爬虫+数据可视化】国内疫情或将零增长,我们离疫情结束有多远?(世界地图)


    导语

    这场灾难和每个人息息相关。

    一场疫情,来势汹汹。

    病毒与困境交织,不安与艰难裹挟,一齐左右着这个时代下每个人的命运。

    没有人是旁观者,所有人都是局内人。

    曾有预测国内疫情或将零增长,那么我们离全国疫情结束到底有多远呢?

    今天就带大家来分析一下全国的最新疫情消息吧!👇做一波爬虫跟数据可视化展示。

    所有文章完整的素材+源码都在👇👇

    粉丝白嫖源码福利,请移步至CSDN社区或文末公众hao即可免费。

    正文

    一、项目思路

    实现爬虫: 分析数据来源 https://api.inews.qq.com/newsqa/v1/automation/modules/list?

    modules=FAutoCountryConfirmAdd,WomWorld,WomAboard 。

    实现代码: 1. 发送请求 2. 获取数据 3. 解析数据 4. 保存数据。

    二、运行环境

    运行环境:Python 3 、Pycharm、requests (爬虫当中 发送网络请求) 、 pandas (表格处

    理 / 保存数据 )、 pyecharts (可视化)。
     

    1. 第三方库的安装:pip install + 模块名 或者 带镜像源 pip install -i
    2. https://pypi.douban.com/simple/ +模块名

    三、代码展示

    1)爬取数据(部分代码)

    1. import requests # 发送请求 第三方模块(安装)
    2. import csv
    3. # 表格的表头
    4. with open('疫情数据.csv', mode='a', encoding='utf-8', newline='') as f:
    5. csv_writer = csv.writer(f)
    6. csv_writer.writerow(['name', 'confirmAdd', 'confirm', 'dead', 'heal', 'nowConfirm', 'nowConfirmCompare'])
    7. # 赋值操作 x = 1, y = 2
    8. url = 'https://api.inews.qq.com/newsqa/v1/automation/modules/list?modules=FAutoCountryConfirmAdd,WomWorld,WomAboard'
    9. # 1. 发送请求
    10. response = requests.post(url)
    11. # : 请求成功
    12. # json是一种前后端数据交互的格式
    13. # json_data: Python里面字典类型数据
    14. # 2. 获取数据
    15. json_data = response.json()
    16. # json 结构化数据
    17. # 非结构化数据 网页源代码 没有任何规律数据
    18. # 定位网页源代码
    19. # 3. 解析数据
    20. womAboard = json_data['data']['WomAboard']
    21. # 循环 执行重复代码
    22. for wom in womAboard:
    23. name = wom['name']
    24. confirmAdd = wom['confirmAdd']
    25. confirm = wom['confirm']
    26. dead = wom['dead']
    27. heal = wom['heal']
    28. nowConfirm = wom['nowConfirm']
    29. nowConfirmCompare = wom['nowConfirmCompare']
    30. print(name, confirmAdd, confirm, dead, heal, nowConfirm, nowConfirmCompare)
    31. # 4. 保存数据
    32. # mode='a': 追加写入
    33. with open('疫情数据.csv', mode='a', encoding='utf-8', newline='') as f:
    34. csv_writer = csv.writer(f)
    35. csv_writer.writerow([name, confirmAdd, confirm, dead, heal, nowConfirm, nowConfirmCompare])

    效果展示——

    爬取的数据👇

    2)数据可视化(代码)

    1. import pandas as pd
    2. from pyecharts.charts import Map
    3. from pyecharts import options as opts
    4. name_map = {
    5. 'Singapore Rep.': '新加坡',
    6. 'Dominican Rep.': '多米尼加',
    7. 'Palestine': '巴勒斯坦',
    8. 'Bahamas': '巴哈马',
    9. 'Timor-Leste': '东帝汶',
    10. 'Afghanistan': '阿富汗',
    11. 'Guinea-Bissau': '几内亚比绍',
    12. "Côte d'Ivoire": '科特迪瓦',
    13. 'Siachen Glacier': '锡亚琴冰川',
    14. "Br. Indian Ocean Ter.": '英属印度洋领土',
    15. 'Angola': '安哥拉',
    16. 'Albania': '阿尔巴尼亚',
    17. 'United Arab Emirates': '阿联酋',
    18. 'Argentina': '阿根廷',
    19. 'Armenia': '亚美尼亚',
    20. 'French Southern and Antarctic Lands': '法属南半球和南极领地',
    21. 'Australia': '澳大利亚',
    22. 'Austria': '奥地利',
    23. 'Azerbaijan': '阿塞拜疆',
    24. 'Burundi': '布隆迪',
    25. 'Belgium': '比利时',
    26. 'Benin': '贝宁',
    27. 'Burkina Faso': '布基纳法索',
    28. 'Bangladesh': '孟加拉国',
    29. 'Bulgaria': '保加利亚',
    30. 'The Bahamas': '巴哈马',
    31. 'Bosnia and Herz.': '波斯尼亚和黑塞哥维那',
    32. 'Belarus': '白俄罗斯',
    33. 'Belize': '伯利兹',
    34. 'Bermuda': '百慕大',
    35. 'Bolivia': '玻利维亚',
    36. 'Brazil': '巴西',
    37. 'Brunei': '文莱',
    38. 'Bhutan': '不丹',
    39. 'Botswana': '博茨瓦纳',
    40. 'Central African Rep.': '中非',
    41. 'Canada': '加拿大',
    42. 'Switzerland': '瑞士',
    43. 'Chile': '智利',
    44. 'China': '中国',
    45. 'Ivory Coast': '象牙海岸',
    46. 'Cameroon': '喀麦隆',
    47. 'Dem. Rep. Congo': '刚果民主共和国',
    48. 'Congo': '刚果',
    49. 'Colombia': '哥伦比亚',
    50. 'Costa Rica': '哥斯达黎加',
    51. 'Cuba': '古巴',
    52. 'N. Cyprus': '北塞浦路斯',
    53. 'Cyprus': '塞浦路斯',
    54. 'Czech Rep.': '捷克',
    55. 'Germany': '德国',
    56. 'Djibouti': '吉布提',
    57. 'Denmark': '丹麦',
    58. 'Algeria': '阿尔及利亚',
    59. 'Ecuador': '厄瓜多尔',
    60. 'Egypt': '埃及',
    61. 'Eritrea': '厄立特里亚',
    62. 'Spain': '西班牙',
    63. 'Estonia': '爱沙尼亚',
    64. 'Ethiopia': '埃塞俄比亚',
    65. 'Finland': '芬兰',
    66. 'Fiji': '斐',
    67. 'Falkland Islands': '福克兰群岛',
    68. 'France': '法国',
    69. 'Gabon': '加蓬',
    70. 'United Kingdom': '英国',
    71. 'Georgia': '格鲁吉亚',
    72. 'Ghana': '加纳',
    73. 'Guinea': '几内亚',
    74. 'Gambia': '冈比亚',
    75. 'Guinea Bissau': '几内亚比绍',
    76. 'Eq. Guinea': '赤道几内亚',
    77. 'Greece': '希腊',
    78. 'Greenland': '格陵兰',
    79. 'Guatemala': '危地马拉',
    80. 'French Guiana': '法属圭亚那',
    81. 'Guyana': '圭亚那',
    82. 'Honduras': '洪都拉斯',
    83. 'Croatia': '克罗地亚',
    84. 'Haiti': '海地',
    85. 'Hungary': '匈牙利',
    86. 'Indonesia': '印度尼西亚',
    87. 'India': '印度',
    88. 'Ireland': '爱尔兰',
    89. 'Iran': '伊朗',
    90. 'Iraq': '伊拉克',
    91. 'Iceland': '冰岛',
    92. 'Israel': '以色列',
    93. 'Italy': '意大利',
    94. 'Jamaica': '牙买加',
    95. 'Jordan': '约旦',
    96. 'Japan': '日本',
    97. 'Kazakhstan': '哈萨克斯坦',
    98. 'Kenya': '肯尼亚',
    99. 'Kyrgyzstan': '吉尔吉斯斯坦',
    100. 'Cambodia': '柬埔寨',
    101. 'Korea': '韩国',
    102. 'Kosovo': '科索沃',
    103. 'Kuwait': '科威特',
    104. 'Lao PDR': '老挝',
    105. 'Lebanon': '黎巴嫩',
    106. 'Liberia': '利比里亚',
    107. 'Libya': '利比亚',
    108. 'Sri Lanka': '斯里兰卡',
    109. 'Lesotho': '莱索托',
    110. 'Lithuania': '立陶宛',
    111. 'Luxembourg': '卢森堡',
    112. 'Latvia': '拉脱维亚',
    113. 'Morocco': '摩洛哥',
    114. 'Moldova': '摩尔多瓦',
    115. 'Madagascar': '马达加斯加',
    116. 'Mexico': '墨西哥',
    117. 'Macedonia': '马其顿',
    118. 'Mali': '马里',
    119. 'Myanmar': '缅甸',
    120. 'Montenegro': '黑山',
    121. 'Mongolia': '蒙古',
    122. 'Mozambique': '莫桑比克',
    123. 'Mauritania': '毛里塔尼亚',
    124. 'Malawi': '马拉维',
    125. 'Malaysia': '马来西亚',
    126. 'Namibia': '纳米比亚',
    127. 'New Caledonia': '新喀里多尼亚',
    128. 'Niger': '尼日尔',
    129. 'Nigeria': '尼日利亚',
    130. 'Nicaragua': '尼加拉瓜',
    131. 'Netherlands': '荷兰',
    132. 'Norway': '挪威',
    133. 'Nepal': '尼泊尔',
    134. 'New Zealand': '新西兰',
    135. 'Oman': '阿曼',
    136. 'Pakistan': '巴基斯坦',
    137. 'Panama': '巴拿马',
    138. 'Peru': '秘鲁',
    139. 'Philippines': '菲律宾',
    140. 'Papua New Guinea': '巴布亚新几内亚',
    141. 'Poland': '波兰',
    142. 'Puerto Rico': '波多黎各',
    143. 'Dem. Rep. Korea': '朝鲜',
    144. 'Portugal': '葡萄牙',
    145. 'Paraguay': '巴拉圭',
    146. 'Qatar': '卡塔尔',
    147. 'Romania': '罗马尼亚',
    148. 'Russia': '俄罗斯',
    149. 'Rwanda': '卢旺达',
    150. 'W. Sahara': '西撒哈拉',
    151. 'Saudi Arabia': '沙特阿拉伯',
    152. 'Sudan': '苏丹',
    153. 'S. Sudan': '南苏丹',
    154. 'Senegal': '塞内加尔',
    155. 'Solomon Is.': '所罗门群岛',
    156. 'Sierra Leone': '塞拉利昂',
    157. 'El Salvador': '萨尔瓦多',
    158. 'Somaliland': '索马里兰',
    159. 'Somalia': '索马里',
    160. 'Serbia': '塞尔维亚',
    161. 'Suriname': '苏里南',
    162. 'Slovakia': '斯洛伐克',
    163. 'Slovenia': '斯洛文尼亚',
    164. 'Sweden': '瑞典',
    165. 'Swaziland': '斯威士兰',
    166. 'Syria': '叙利亚',
    167. 'Chad': '乍得',
    168. 'Togo': '多哥',
    169. 'Thailand': '泰国',
    170. 'Tajikistan': '塔吉克斯坦',
    171. 'Turkmenistan': '土库曼斯坦',
    172. 'East Timor': '东帝汶',
    173. 'Trinidad and Tobago': '特里尼达和多巴哥',
    174. 'Tunisia': '突尼斯',
    175. 'Turkey': '土耳其',
    176. 'Tanzania': '坦桑尼亚',
    177. 'Uganda': '乌干达',
    178. 'Ukraine': '乌克兰',
    179. 'Uruguay': '乌拉圭',
    180. 'United States': '美国',
    181. 'Uzbekistan': '乌兹别克斯坦',
    182. 'Venezuela': '委内瑞拉',
    183. 'Vietnam': '越南',
    184. 'Vanuatu': '瓦努阿图',
    185. 'West Bank': '西岸',
    186. 'Yemen': '也门',
    187. 'South Africa': '南非',
    188. 'Zambia': '赞比亚',
    189. 'Zimbabwe': '津巴布韦',
    190. 'Comoros': '科摩罗'
    191. }
    192. pieces = [
    193. {"min": 1000000},
    194. {"min": 100000, "max": 999999},
    195. {"min": 10000, "max": 99999},
    196. {"min": 1000, "max": 9999},
    197. {"min": 100, "max": 999},
    198. {"min": 0, "max": 99},
    199. ]
    200. # 1. 读取数据
    201. df = pd.read_csv('疫情数据.csv')
    202. world_map = (
    203. Map(init_opts=opts.InitOpts(width='1400px', height='600px'))
    204. .add('新增确诊', [list(i) for i in zip(df['name'], df['confirmAdd'])], 'world', is_map_symbol_show=False, name_map=name_map)
    205. .add('累计确诊', [list(i) for i in zip(df['name'], df['confirm'])], 'world', is_map_symbol_show=False, name_map=name_map)
    206. .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    207. .set_global_opts(
    208. title_opts=opts.TitleOpts(title='世界疫情情况'),
    209. visualmap_opts=opts.VisualMapOpts(max_=1000000, is_piecewise=True, pieces=pieces)
    210. )
    211. )
    212. world_map.render('1.html')

    效果展示——

    总结

    疾病的防控是离不开政府和群众的共同努力的。

    上下一心,才能共克时艰,相信我们终将战胜疫情。

    华山医院感染科主任张文宏日前在接受「我们视频」采访时谈到:

    「人类从来没有在任何一种病毒和细菌面前失败过,我们最终是能够胜利的,无非是胜利的时间是什么时候。」

    但是,不要太早放松警惕——愿疫情早日结束,山河无恙,我们平安。

    ✨完整的素材源码等:可以滴滴我吖!或者点击文末hao自取免费拿的哈~

    🔨推荐往期文章——

    项目0.1  【Python抢票神器】火车票枪票软件到底靠谱吗?实测—终极攻略。

    项目0.2  【Python实战】WIFI密码小工具,甩万能钥匙十条街,WIFI任意连哦~(附源码)

    项目0.3  【Python实战】再分享一款商品秒杀小工具,我已经把压箱底的宝贝拿出来啦~

    项目0.4  【Python爬虫实战】 不生产小说,只做网站的搬运工,太牛逼了~(附源码)

    🎁文章汇总——

    Python文章合集 | (入门到实战、游戏、Turtle、案例等)

    (文章汇总还有更多你案例等你来学习啦~源码找我即可免费!)

  • 相关阅读:
    葡萄糖-聚乙二醇-刀豆球蛋白A,ConcanavalinA-PEG-Glucose
    css实现倾斜按钮(radial-gradient)
    功能测试上限10K,我的进阶之路从自动化—测开,我的经历值得借鉴...
    配电网调度vr虚拟仿真应用案例汇总
    彻底搞懂Mybatis
    文心一言与GPT-4全面对比——人工智能语言模型的新纪元
    C高级 Linux中的文件相关指令
    Linux网络编程-网络层IP协议
    机器人C++库(12) Robotics Library 之路径规划算法:PRM、RRT、EET算法
    8.12 PowerBI系列之DAX函数专题-分组内动态TopN和others
  • 原文地址:https://blog.csdn.net/xy258009/article/details/125985637