Python爬取全球疫情數據,實現可視化顯示地圖數據(附代碼)

前言

本文的文字及圖片來源於網絡,僅供學習、交流使用,不具備任何商業用途,版權歸原做者全部,若有問題請及時聯繫咱們以做處理。html

武漢地區,目前已經實現住院患者清零了,國內疫情已經穩定,然而中國之外新冠確診病例達到2720458例。爲了體現大國風範,今天帶領你們用python實現繪製疫情地圖python

知識點

1. 爬蟲基本流程json

2. jsonapi

3. requests瀏覽器

4. pyecharts網絡

開發環境

Python 3.6app

Pycharmecharts

思路

 

1.目標網址dom

 

 

2.模擬瀏覽器實現訪問urlpost

 

 

3.從網頁源代碼中提取數據

 

 

4.數據可視化

 

 

代碼以下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-


import json
import requests
import jsonpath


from pyecharts.charts import Map,Geo
from pyecharts import options as opts
from pyecharts.globals import GeoType,RenderType

# 1.目標網址
url = 'https://api.inews.qq.com/newsqa/v1/automation/foreign/country/ranklist'
# 2.模擬瀏覽器實現訪問url
resp = requests.post(url).text
# print(resp)
data = json.loads(resp)
# print(data)
# print(data)
# 3.從網頁源代碼中提取數據
name = jsonpath.jsonpath(data, "$..name")
print(len(name))
confirm = jsonpath.jsonpath(data, "$..confirm")
print(len(confirm))
# suspect = jsonpath.jsonpath(data, "$..suspect")
# print(len(suspect))
# dead = jsonpath.jsonpath(data, "$..dead")
# print(len(dead))
# heal = jsonpath.jsonpath(data, "$..heal")
# print(len(heal))
# print(china)
# data_lists = []
# for i in range(179):
#     data_list = []
#     data_list.append(name[i])
#     data_list.append(confirm[i])
#     data_lists.append(data_list)
# print(data_lists)

a = zip(name, confirm)


nameMap = {
    'Singapore Rep.': '新加坡',
    'Dominican Rep.': '多米尼加',
    'Palestine': '巴勒斯坦',
    'Bahamas': '巴哈馬',
    'Timor-Leste': '東帝汶',
    'Afghanistan': '阿富汗',
    'Guinea-Bissau': '幾內亞比紹',
    "Côte d'Ivoire": '科特迪瓦',
    'Siachen Glacier': '錫亞琴冰川',
    "Br. Indian Ocean Ter.": '英屬印度洋領土',
    'Angola': '安哥拉',
    'Albania': '阿爾巴尼亞',
    'United Arab Emirates': '阿聯酋',
    'Argentina': '阿根廷',
    'Armenia': '亞美尼亞',
    'French Southern and Antarctic Lands': '法屬南半球和南極領地',
    'Australia': '澳大利亞',
    'Austria': '奧地利',
    'Azerbaijan': '阿塞拜疆',
    'Burundi': '布隆迪',
    'Belgium': '比利時',
    'Benin': '貝寧',
    'Burkina Faso': '布基納法索',
    'Bangladesh': '孟加拉國',
    'Bulgaria': '保加利亞',
    'The Bahamas': '巴哈馬',
    'Bosnia and Herz.': '波斯尼亞和黑塞哥維那',
    'Belarus': '白俄羅斯',
    'Belize': '伯利茲',
    'Bermuda': '百慕大',
    'Bolivia': '玻利維亞',
    'Brazil': '巴西',
    'Brunei': '文萊',
    'Bhutan': '不丹',
    'Botswana': '博茨瓦納',
    'Central African Rep.': '中非共和國',
    'Canada': '加拿大',
    'Switzerland': '瑞士',
    'Chile': '智利',
    'China': '中國',
    'Ivory Coast': '象牙海岸',
    'Cameroon': '喀麥隆',
    'Dem. Rep. Congo': '剛果(金)',
    'Congo': '剛果(布)',
    'Colombia': '哥倫比亞',
    'Costa Rica': '哥斯達黎加',
    'Cuba': '古巴',
    'N. Cyprus': '北塞浦路斯',
    'Cyprus': '塞浦路斯',
    'Czech Rep.': '捷克',
    'Germany': '德國',
    'Djibouti': '吉布提',
    'Denmark': '丹麥',
    'Algeria': '阿爾及利亞',
    'Ecuador': '厄瓜多爾',
    'Egypt': '埃及',
    'Eritrea': '厄立特里亞',
    'Spain': '西班牙',
    'Estonia': '愛沙尼亞',
    'Ethiopia': '埃塞俄比亞',
    'Finland': '芬蘭',
    'Fiji': '',
    'Falkland Islands': '福克蘭羣島',
    'France': '法國',
    'Gabon': '加蓬',
    'United Kingdom': '英國',
    'Georgia': '格魯吉亞',
    'Ghana': '加納',
    'Guinea': '幾內亞',
    'Gambia': '岡比亞',
    'Guinea Bissau': '幾內亞比紹',
    'Eq. Guinea': '赤道幾內亞',
    'Greece': '希臘',
    'Greenland': '格陵蘭',
    'Guatemala': '危地馬拉',
    'French Guiana': '法屬圭亞那',
    'Guyana': '圭亞那',
    'Honduras': '洪都拉斯',
    'Croatia': '克羅地亞',
    'Haiti': '海地',
    'Hungary': '匈牙利',
    'Indonesia': '印度尼西亞',
    'India': '印度',
    'Ireland': '愛爾蘭',
    'Iran': '伊朗',
    'Iraq': '伊拉克',
    'Iceland': '冰島',
    'Israel': '以色列',
    'Italy': '意大利',
    'Jamaica': '牙買加',
    'Jordan': '約旦',
    'Japan': '日本',
    'Japan': '日本本土',
    'Kazakhstan': '哈薩克斯坦',
    'Kenya': '肯尼亞',
    'Kyrgyzstan': '吉爾吉斯斯坦',
    'Cambodia': '柬埔寨',
    'Korea': '韓國',
    'Kosovo': '科索沃',
    'Kuwait': '科威特',
    'Lao PDR': '老撾',
    'Lebanon': '黎巴嫩',
    'Liberia': '利比里亞',
    'Libya': '利比亞',
    'Sri Lanka': '斯里蘭卡',
    'Lesotho': '萊索托',
    'Lithuania': '立陶宛',
    'Luxembourg': '盧森堡',
    'Latvia': '拉脫維亞',
    'Morocco': '摩洛哥',
    'Moldova': '摩爾多瓦',
    'Madagascar': '馬達加斯加',
    'Mexico': '墨西哥',
    'Macedonia': '馬其頓',
    'Mali': '馬裏',
    'Myanmar': '緬甸',
    'Montenegro': '黑山',
    'Mongolia': '蒙古',
    'Mozambique': '莫桑比克',
    'Mauritania': '毛里塔尼亞',
    'Malawi': '馬拉維',
    'Malaysia': '馬來西亞',
    'Namibia': '納米比亞',
    'New Caledonia': '新喀里多尼亞',
    'Niger': '尼日爾',
    'Nigeria': '尼日利亞',
    'Nicaragua': '尼加拉瓜',
    'Netherlands': '荷蘭',
    'Norway': '挪威',
    'Nepal': '尼泊爾',
    'New Zealand': '新西蘭',
    'Oman': '阿曼',
    'Pakistan': '巴基斯坦',
    'Panama': '巴拿馬',
    'Peru': '祕魯',
    'Philippines': '菲律賓',
    'Papua New Guinea': '巴布亞新幾內亞',
    'Poland': '波蘭',
    'Puerto Rico': '波多黎各',
    'Dem. Rep. Korea': '朝鮮',
    'Portugal': '葡萄牙',
    'Paraguay': '巴拉圭',
    'Qatar': '卡塔爾',
    'Romania': '羅馬尼亞',
    'Russia': '俄羅斯',
    'Rwanda': '盧旺達',
    'W. Sahara': '西撒哈拉',
    'Saudi Arabia': '沙特阿拉伯',
    'Sudan': '蘇丹',
    'S. Sudan': '南蘇丹',
    'Senegal': '塞內加爾',
    'Solomon Is.': '所羅門羣島',
    'Sierra Leone': '塞拉利昂',
    'El Salvador': '薩爾瓦多',
    'Somaliland': '索馬里蘭',
    'Somalia': '索馬里',
    'Serbia': '塞爾維亞',
    'Suriname': '蘇里南',
    'Slovakia': '斯洛伐克',
    'Slovenia': '斯洛文尼亞',
    'Sweden': '瑞典',
    'Swaziland': '斯威士蘭',
    'Syria': '敘利亞',
    'Chad': '乍得',
    'Togo': '多哥',
    'Thailand': '泰國',
    'Tajikistan': '塔吉克斯坦',
    'Turkmenistan': '土庫曼斯坦',
    'East Timor': '東帝汶',
    'Trinidad and Tobago': '特里尼達和多巴哥',
    'Tunisia': '突尼斯',
    'Turkey': '土耳其',
    'Tanzania': '坦桑尼亞',
    'Uganda': '烏干達',
    'Ukraine': '烏克蘭',
    'Uruguay': '烏拉圭',
    'United States': '美國',
    'Uzbekistan': '烏茲別克斯坦',
    'Venezuela': '委內瑞拉',
    'Vietnam': '越南',
    'Vanuatu': '瓦努阿圖',
    'West Bank': '西岸',
    'Yemen': '也門',
    'South Africa': '南非',
    'Zambia': '贊比亞',
    'Zimbabwe': '津巴布韋'
}


map_ = Map(opts.InitOpts(width='1200px', height='600px')).add(series_name="世界各國病死率",  # 設置提示框標籤
                 data_pair=a,  # 輸入數據
                 maptype="world",  # 設置地圖類型爲世界地圖
                 name_map=nameMap,  # 添加映射
                 is_map_symbol_show=False  # 不顯示標記點
                 )

# 設置系列配置項
map_.set_series_opts(label_opts=opts.LabelOpts(is_show=False))  # 不顯示國家名稱
# 設置全局配置項
map_.set_global_opts(title_opts=opts.TitleOpts(title="國外疫情狀況"),  # 設置圖標題
                    visualmap_opts=opts.VisualMapOpts(max_=1000000, is_piecewise=True))  # 顯示圖例

# map_.set_global_opts(title_opts=opts.TitleOpts(title="國外疫情狀況"),  # 設置圖標題
#                      visualmap_opts=opts.VisualMapOpts(pieces=[  # 自定義分組的分店和顏色
#                              {"min": 900000, "color": "#800000"},
#                              {"min": 50000, "max": 500000, "lable":'0.15~0.19', "color": "#AA0000"},  # 栗色
#                              {"min": 10000, "max": 50000, "color": "#CC0000"},  # 耐火磚
#                              {"min": 1000, "max": 10000, "color": "#FF0000"},  # 印度紅
#                              {"min": 0, "max": 1000, "color": "#FF3333"},  # 玫瑰棕色
#                              {"max": 0, "color": "#FFCCCC"},  # 薄霧玫瑰
#                      ],


#                              is_piecewise=True))  # 顯示分段式圖例


map_.render("國外疫情狀況.html")

最後效果圖:

 

 

若是你處於想學Python或者正在學習Python,Python的教程很多了吧,可是是最新的嗎?說不定你學了多是兩年前人家就學過的內容,在這小編分享一波2020最新的Python教程。獲取方式,私信小編 「 資料 」,便可免費獲取哦!

相關文章
相關標籤/搜索