寻找目标网站

首先找到一个数据接口

比如,找到这个网站https://xw.qq.com/act/qgfeiyan?pgv_ref=3gqtb&ADTAG=3gqtb

然后鼠标右键打开检查

找到Network,并选中XHR

然后刷新页面

选择ranklist

通过preview可以看到这里有我们需要的数据信息

然后从headers选项中找到了这些数据的接口地址

https://api.inews.qq.com/newsqa/v1/automation/foreign/country/ranklist

并且可以看到数据类型是json类型

导入相关的库

首先需要导入库,比如requests,jsonpath

方法是找到pycharm下面的终端选项(Terminal),然后pip install XXX,比如pip install jsonpath

还有一个pyecharts的库,这个比较复杂一点,可以参考

https://www.cnblogs.com/cyx-b/p/12815433.html

获取数据

首先来个简单的,把json形式的数据获取下来

import json
import requests
import jsonpath
# 1.目标网站
url=\'https://api.inews.qq.com/newsqa/v1/automation/foreign/country/ranklist\'
# 2.请求资源
resp=requests.get(url)
print(resp.text)

上图所示的输出结果正是json格式

但是,我们可以通过json.loads将其转换为字典类型

import json
import requests
import jsonpath
# 1.目标网站
url=\'https://api.inews.qq.com/newsqa/v1/automation/foreign/country/ranklist\'
# 2.请求资源
resp=requests.get(url)
# 3.提取数据
# 类型转换 json-->dict
data=json.loads(resp.text)
print(type(data))
print(data[\'data\'][0][\'name\'])

但是这样显然很麻烦,于是我们又用到了前面安装的jsonpath

使用方法为jsonpath.jsonpath(data,”$..name”)

data是我们的内容,$表示根节点下,

这个很好理解,仔细观察preview部分,可以看到标签其实是分层级的,而$..name表示根节点下的任意层级name键值的部分

import json
import requests
import jsonpath
# 1.目标网站
url=\'https://api.inews.qq.com/newsqa/v1/automation/foreign/country/ranklist\'
# 2.请求资源
resp=requests.get(url)
# 3.提取数据
# 类型转换 json-->dict
data=json.loads(resp.text)
name = jsonpath.jsonpath(data,"$..name")
print(name)

这样就获得了受疫情影响较为严重的国家的名称

同理,我们可以如法炮制出确诊人数的列表,查看一下确诊人数使用的标签名,是confirm

我们只需要把国家名使用的name,改成confirm即可

import json
import requests
import jsonpath
# 1.目标网站
url=\'https://api.inews.qq.com/newsqa/v1/automation/foreign/country/ranklist\'
# 2.请求资源
resp=requests.get(url)
# 3.提取数据
# 类型转换 json-->dict
data=json.loads(resp.text)
name = jsonpath.jsonpath(data,"$..name")
print(name)
confirm = jsonpath.jsonpath(data,"$..confirm")
print(confirm)

数据的可视化

这个部分与pyecharts的版本有关,不同版本的pyecharts对应的代码是不同的,

pyecharts为1.X版本

可以使用Python中的zip函数将两组数据组合到一起

zip()的用法可以参照

https://www.cnblogs.com/cyx-b/p/12818426.html

import json
import requests
import jsonpath
# 1.目标网站
url=\'https://api.inews.qq.com/newsqa/v1/automation/foreign/country/ranklist\'
# 2.请求资源
resp=requests.get(url)
# 3.提取数据
# 类型转换 json-->dict
data=json.loads(resp.text)
name = jsonpath.jsonpath(data,"$..name")
print(name)
confirm = jsonpath.jsonpath(data,"$..confirm")
print(confirm)
data_list = zip(name,confirm)
print(list(data_list))

注意看第三行的输出

import json
import requests
import jsonpath
from pyecharts import Map
# 1.目标网站
url=\'https://api.inews.qq.com/newsqa/v1/automation/foreign/country/ranklist\'
# 2.请求资源
resp=requests.get(url)
# 3.提取数据
# 类型转换 json-->dict
data=json.loads(resp.text)
name = jsonpath.jsonpath(data,"$..name")
print(name)
confirm = jsonpath.jsonpath(data,"$..confirm")
print(confirm)
data_list = zip(name,confirm)
print(list(data_list))
# 4.可视化 matplotlib 和 pyecharts
map = Map().add(series_name=\'世界疫情分布\',
                data_pair=data_list,
                maptype=\'world\',
                is_map_symbol_show=False
)
map.render(\'世界疫情分布情况.html\')

 

但是这样显得乱糟糟的

对代码稍作修改,通过options使得国家名称不会同时出现,而是鼠标处显示

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.请求资源
resp=requests.get(url)
# 3.提取数据
# 类型转换 json-->dict
data=json.loads(resp.text)
name = jsonpath.jsonpath(data,"$..name")
# print(name)
confirm = jsonpath.jsonpath(data,"$..confirm")
# print(confirm)
data_list = zip(name,confirm)
# print(list(data_list))
# 4.可视化 matplotlib 和 pyecharts
map = Map().add(series_name=\'世界疫情分布\',
                data_pair=data_list,
                maptype=\'world\',
                is_map_symbol_show=False
)
map.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
map.render(\'世界疫情分布情况2.html\')

然后通过一个nameMap字典,建立国家名中英文映射,同时需要在Map.add()里面加入name_map=nameMap,就可以将疫情数据显示出来了

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.请求资源
resp=requests.get(url)
# 3.提取数据
# 类型转换 json-->dict
data=json.loads(resp.text)
name = jsonpath.jsonpath(data,"$..name")
# print(name)
confirm = jsonpath.jsonpath(data,"$..confirm")
# print(confirm)
data_list = zip(name,confirm)
# print(list(data_list))
# 4.可视化 matplotlib 和 pyecharts

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().add(series_name=\'世界疫情分布\',
                data_pair=data_list,
                maptype=\'world\',
                name_map=nameMap,
                is_map_symbol_show=False
)
map.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
map.render(\'世界疫情分布情况3.html\')

pyecharts为0.5.10版本

import json
import requests
import jsonpath
from pyecharts import Map
# 1.目标网站
url=\'https://api.inews.qq.com/newsqa/v1/automation/foreign/country/ranklist\'
# 2.请求资源
resp=requests.get(url)
# 3.提取数据
# 类型转换 json-->dict
data=json.loads(resp.text)
name = jsonpath.jsonpath(data,"$..name")
print(name)
confirm = jsonpath.jsonpath(data,"$..confirm")
print(confirm)
map = Map("世界疫情分布",width=1200,height=600)
map.add("COVID19",name,confirm,maptype=\'world\',is_map_symbol_show=False)
map.render(\'世界疫情分布情况.html\')

运行成功后,工程文件夹中会出现html文件

 可以右键点击,然后选择Show in Explorer

 打开后效果如下:

但是不难发现,鼠标移动到相应位置的时候出现的是英文名称,而且没有确诊人数的信息。

所以首先要做一个国家名称的中英文映射

引入一个字典,如下:

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.add里面加入name_map=nameMap,如下:

import json
import requests
import jsonpath
from pyecharts import Map
# 1.目标网站
url=\'https://api.inews.qq.com/newsqa/v1/automation/foreign/country/ranklist\'
# 2.请求资源
resp=requests.get(url)
# 3.提取数据
# 类型转换 json-->dict
data=json.loads(resp.text)
name = jsonpath.jsonpath(data,"$..name")
print(name)
confirm = jsonpath.jsonpath(data,"$..confirm")
print(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("世界疫情分布",width=1200,height=600)
map.add("COVID19",name,confirm,maptype=\'world\',name_map=nameMap,is_map_symbol_show=False)
map.render(\'世界疫情分布情况.html\')

运行成功后,刷新html页面

 

版权声明:本文为cyx-b原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/cyx-b/p/12817276.html