爬取中国各省份新冠疫情数月数据

由于前段时间正好有这样一个需求,当时做好的是爬取的数据放到txt然后导入到数据库,最后通过navicat导出为excel,本人兴趣使然,学习了python想写一个更简单的程序,虽然不尽人意,比如想把各个省份的数据放在各个表单里面,但由于使用的模块每次填入数据都会清空以前的数据,如果用复制的方法,每次填入一个省份的数据就要复制先前填入的数据,给我的感觉很别扭,我宁愿不去实现这个功能,但由于时间精力有限,所以现阶段只能做到这个地步了。
虽然这个代码只有很短的一段,但是是我用了几天才写成的,本人也是初学者,嘴下留情。
如果有想法可以跟我交流哦,我还是很想优化一下的,只不过最近在忙别的。
以下为效果图。
爬取中国各省份新冠疫情数月数据爬取中国各省份新冠疫情数月数据import requests
import json
import pandas as pd
headers = {
“User-Agent”: “Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36”,
“Referer”: “https://news.qq.com//zt2020/page/feiyan.htm”,
“Origin”:“https://news.qq.com”,
“Accept”:“text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3”,
“Host”:“api.inews.qq.com”,
“Upgrade-Insecure-Requests”:“1”
}
url = ‘https://api.inews.qq.com/newsqa/v1/query/pubished/daily/list?province={}&’
PATH="./data/"
provinces=[
“北京”,“天津”,“河北”,“山西”,“内蒙古”,“辽宁”,“吉林”,“黑龙江”,“上海”,“江苏”,“浙江”,“安徽”,“福建”,“江西”,“山东”,“河南”,“湖北”,“广东”,“广西”,“海南”,“重庆”,“四川”,“贵州”,“云南”,“西藏”,“陕西”,“甘肃”,“青海”,“宁夏”,“新疆”,“湖南”
]
list_values = [[], [], [], [], [], [], [], [], [], [], [], [], [], [], []]
dict = {}
for item in provinces:
req_url = url.format(item)
response = requests.get(url = req_url, headers=headers)
print(req_url)
data = json.loads(response.text)
datas = data[‘data’]
length = len(datas[0])
list_keys = list(datas[0])
for data in datas:
list_data = list(data.values())
for i in range(length):
list_values[i].append(list_data[i])
for i in range(length):
dict[list_keys[i]] = list_values[i]
df = pd.DataFrame(dict)
df.to_excel(‘data.xlsx’, sheet_name =‘中国疫情数据’, index = False, na_rep=‘无’)