使用python简单获取新冠肺炎数据,并进行本地保存

举报
花溪 发表于 2021/02/08 16:36:47 2021/02/08
【摘要】 Python实践—简单数据获取

使用 Python 获取新冠肺炎数据,并进行本地保存
目标网站: https://news.qq.com/zt2020/page/feiyan.htm#/

实现:获取网站中湖北(其他地区同理)疫情感染人数

1  网站分析

网站中的数据加载通常有两种加载形式:动态与静态,打开浏览器的开发者平台( F12 ,推荐 chrome 浏览器),选择 network中的 XHR ,查看网站中的数据加载项 :

找到湖北

选择最后一个加载项,打开可以发现文件中的信息为所需要获取的数据,通过与网页中的数据对比可以发现为湖北的数据。

选择 headers 查看数据项的具体信息。

http 请求为 POST 请求,参数为 province ,对应的 url 为 https://api.inews.qq.com/newsqa/v1/query/pubished/daily/list?province=%E6%B9%96%E5%8C%97&city=%E6%AD%A6%E6%B1%89&

url 最后类似于乱码形式的字符串为国家名转码以后的文本。如果需要获取其他国家的数据,只需要将 url 变为https://api.inews.qq.com/newsqa/v1/query/pubished/daily/list?province=国家名称 & 即可, 在拼接时无法使用中文,可以使用 quote 方法进行转码。


2  数据获取

使用 requests 模块模拟浏览器获取数据。
requests 模块是 Python 中的 http 请求库,使用简单且功能强大。需要进行安装。

1、首先,需要安装python的时候勾选pip并下载requests包(地址:https://github.com/requests/requests

2、然后运行cmd,输入pip install requests

这里如果报错,说找不到pip的话,先去python的scripts文件下看看有没有pip.exe,如果有,那就去系统的高级设置中,添加环境变量到PATH路径中,这里需要添加python本身的文件路径,还需要添加scripts的文件路径进去。然后再去cmd中install requests就好。其他按照提示来就行。



requests.post(url,[data,] [headers,] [proxies,] *args) :使用 post 方式向目标发送请求。
-url :服务器对应的地址。
-data :请求时携带的数据。
-headers : HTTP 请求中 headers 字段。
-proxies :设置代理 IP 地址
将数据写入本地
虽然已经获取数据,但是数据本身并不直观,需要进行处理。通过前面的观察可以发现,数据时字符串形式的字典( json ) ,我们将其转化为字典,然后使用 pandas 进行处理,最后保存至 Excel 文件中。
pandas安装   pip install pandas
此时的数据比较明了,但是数据中有两项存在问题: confirm_add 和 wzz,前者表示新增病例,后者表示疑似病例。
疑似病例中都为零,所以没有意义(实际中不可能都为 0 ),需要删除。而新增病例中存在一个 0 (此处的 0 可能是因为当日没有结束,所以暂不统计),但是我们可以根据当前病例数减去昨日病例进行计算,所以此处也进行删除。
#保存数据,写入本地 Excel 文件中
# python 操作 Excel 文件需要安装环境依赖 xlwt 、 xlrd 工具包
df.to_excel("yiqing.xls", index= False ) # to_csv 可以写入到 csv 文件中
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。