python获取疫情数据,tableau可视化处理

此次爬取的为腾讯网站api接口,网址:https://news.qq.com/zt2020/page/feiyan.htm#/global
采用csv文件存储数据,使用excel对数据处理


import requests
import csv
import urllib.parse   #改变文字编码

with open('epidemic.csv', 'a', newline='', ) as file:  # csv文件存储,一定要放在前边,放后面会随时调用
    csv_file = csv.writer(file)
    csv_file.writerow(['日期', '国家', '省份', '确诊', '治愈', '死亡'])  # csv文件表头

    provinces = ['辽宁', '吉林', '黑龙江', '河北', '山西', '陕西', '甘肃', '青海', '山东', '安徽', '江苏', '浙江', '河南', '湖北', '湖南', '江西', '台湾', '福建', '云南', '海南', '四川', '贵州', '广东', '内蒙古', '新疆', '广西', '西藏', '宁夏', '北京', '上海', '天津', '重庆', '香港', '澳门']
    for name in provinces:
        namegbk = name.encode('utf-8')  # 转码
        new_name = urllib.parse.quote(namegbk)  # 转化成URL使用

        url = 'https://api.inews.qq.com/newsqa/v1/query/pubished/daily/list?province='+new_name
        headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36'}
        res = requests.get(url=url, headers=headers)
        res_json = res.json()
        data_ = res_json['data']
        for i in data_:
            date = i['date']
            country = i['country']
            province = i['province']
            confirm = i['confirm']
            heal = i['heal']
            dead = i['dead']
            csv_file.writerow([date, country, province, confirm, heal, dead])


注意

  1. csv文件的调用需位于数据最前边
  2. 省份懒得打,是百度后再用replace代码改成这样的
  3. 注意转码问题,不然容易错误
  4. 源数据问题,爬取的数据不完整
  5. 爬取网站数据会发现日期数据转换问题,比如2.10日转换成日期后会变成二月一日,我的方法是所有的数据排序筛选出错误日期,手动改正为正确日期后再按照省份排序,再排其他的数据。方法比较麻烦,欢迎大佬评论。
  6. tebleau绘图位于B站,拉入地图直接绘图即可。

你可能感兴趣的:(python获取疫情数据,tableau可视化处理)