数据
https://api.inews.qq.com/newsqa/v1/automation/foreign/country/ranklist
我们来看一下数据:我们点击Network,可能需要加载可以点击Ctrl+R进行加载,然后点击All,我们可以在左侧Name中找到ranklist,从图中可以看到data中的数据是我们要找的数据
接下来我们就要找我们要爬取数据的网址:
从图中选中ranklist之后,点击XHR,然后点击下面的Header之后,我们可以看到Request URL和Request Method,也就是我们代码中的目标网站以及请求资源
模块环境安装
如果pycharm提示没有此模块,我们可以进行模块的安装,步骤:File->Settings->Project->Project Interpreter->点击加号输入我们要安装的模块进行安装
import requests
import json
import jsonpath
from pyecharts.charts import Map,Geo
from pyecharts import options as opts
from pyecharts.globals import GeoType,RenderType
demo
import requests
import json
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.请求资源,获取响应内容,要的是数据,通过requests第三方工具发送请求
resp = requests.post(url)
#3.获取数据
# 类型转换 将json字符串转为字典
data=json.loads(resp.text) # data的类型:class dict
name = jsonpath.jsonpath(data,"$..name") #$表示根目录 ..是任意位置
#name打印出来的是所有国家的名称,所以相应的我们可以分别获取确诊人数,死亡人数等
confirm=jsonpath.jsonpath(data,"$..confirm")
# confirm打印出来的是所有国家确诊的人数
# 数据处理
data_list=list(zip(name,confirm))
#data_list打印出来是:[('美国', 30853032), ('巴西', 12404414), ('印度', 11908910),.......],即将上面的name和confirm一一对应起来
# 4.保存数据(可选)
# 可视化 matplotlib 和 pyecharts
# 这里有个问题就是国外的国家名都是英文,所以这里要引入一个国家名中英文对应的字典
nameMap = {