标签:疫情 python writer 实时 json str requests
目录
一、 实验目的
二、 实验环境
三、 实验准备
-
数据来源
-
接口数据分析
-
requests模块安装
四、 实验设计
- 程序源码-python实现
五、 实验结果
实验目的
了解并掌握网络爬虫的基本原理,并动手实现动态获取全国新型冠状病毒疫情现状。
实验环境
windows 10
Pycharm 2020.1
python 3.7
实验准备
数据来源
打开浏览器访问腾讯新闻疫情大数据展示页面https://news.qq.com/zt2020/page/feiyan.htm#/global
打开chrome开发者工具,可以看到该页面打印了疫情数据
通过进一步查看network请求可知,实际数据接口为
https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5
接口数据分析
首先将上文中的接口页面另存为(Ctrl+S)
getOnsInfo.json文件,使用编辑器notepad++打开,通过查找替换功能将文件中多余的’\’号去除,并删除
data:”{}” 字段中花括号两边的引号。 接着使用插件JSON
Viewer(自行安装)格式化该文件,最后可得到如下图所示的可读文件:
可以很清楚的看到,该json数据以树形的方式展示了国家-身份-城市各个范围内的疫情数据,而我们需要的数据则位于
total和today字段下
在today中展示了按天范围内的疫情数据, total中则包含了疫情出现以来的总数据。
requests模块安装
使用python实现爬虫程序之前,需要安装必要的模块
如果安装了Anaconda,requests就已经可用了。否则,需要在命令行下通过pip安装:
python -m pip install requests
实验设计
程序源码-python实现
import csv
import json
import requests
todayKey = 'today'
totalKey = 'total'
confirmKey = 'confirm'
nowConfirmKey = 'nowConfirm'
nameKey = 'name'
childrenKey = 'children'
ExcelName = '疫情日报.csv' # 数据保存文件
# 腾讯实时疫情接口api接口
api = 'https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5'
# 运行后会在同目录下生成一个 疫情日报.csv文件
if __name__ == '__main__':
datas = json.loads(requests.get(url=api).json()['data'])
with open(ExcelName, 'w', encoding='utf-8', newline='') as csvfile:
writer = csv.writer(csvfile)
dataLog = '更新时间:' + datas['lastUpdateTime']
writer.writerow([dataLog])
for contry in datas['areaTree']:
if contry[nameKey] == '中国':
for province in contry[childrenKey]:
provinceName = str(province[nameKey])
newConfirm = str(province[todayKey][confirmKey])
nowConfirm = str(province[totalKey][nowConfirmKey])
writer.writerow([str('\t' + provinceName + ' 新增确诊: '
+ newConfirm + ', 现有确诊:' + nowConfirm)])
for city in province[childrenKey]:
newConfirm = str(city[todayKey][confirmKey])
nowConfirm = str(city[totalKey][nowConfirmKey])
cityName = city[nameKey]
writer.writerow([str('\t\t' + cityName + ' \t\t新增确诊:' + newConfirm
+ ',\t现有确诊:' + nowConfirm)])
实验结果
程序运行后,会将获取到的疫情数据保存在同级目录下的疫情日报.csv文件中,使用记事本打开:(部分内容)
标签:疫情,python,writer,实时,json,str,requests 来源: https://blog.csdn.net/HLL1234567/article/details/116123021
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。