作者:少年吉,永远保持真诚和热血。
目标网站
腾讯新闻提供的疫情实时追踪网站https://news.qq.com/zt2020/page/feiyan.htm
以火狐浏览器为例,用火狐浏览器打开目标网站,按下F12进入web开发者模式,进入network模块并刷新网页:
https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5
import pandas as pd
import requests
import json
网站将所有信息以json的格式存在data这个变量中,先获取data变量的信息:
url = 'https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5'
area = requests.get(url).json()
data = json.loads(area['data'])
获取最近一次的更新时间
update_time = data['lastUpdateTime']
all_counties = data['areaTree']
for country_data in all_counties:
print(country_data['name'])
中国
日本
新加坡
泰国
韩国
澳大利亚
美国
马来西亚
德国
越南
法国
加拿大
阿联酋
菲律宾
印度
意大利
英国
俄罗斯
尼泊尔
斯里兰卡
芬兰
瑞典
柬埔寨
比利时
西班牙
只分析国内疫情情况,可以写一个简单的if判断:
if country_data['name'] != '中国':
continue
else:
all_provinces = country_data['children'] # children包含了各个省的情况
两句逻辑连在一起
for country_data in all_counties:
if country_data['name'] != '中国':
continue
else:
all_provinces = country_data['children']
all_provinces[-1]
{'name': '西藏',
'children': [{'name': '地区待确认',
'total': {'confirm': 1, 'suspect': 0, 'dead': 0, 'heal': 0},
'today': {'confirm': 0, 'suspect': 0, 'dead': 0, 'heal': 0}}],
'total': {'confirm': 1, 'suspect': 0, 'dead': 0, 'heal': 0},
'today': {'confirm': 0, 'suspect': 0, 'dead': 0, 'heal': 0}}
获取地级市名称信息
for province_data in all_provinces:
province_name = province_data['name']
all_cities = province_data['children']
市区名称获取
all_cities[0]['name']
'地区待确认'
total是一个字典,里面包含了确诊,治愈,死亡的人数信息
all_cities[0]['total']
{'confirm': 1, 'suspect': 0, 'dead': 0, 'heal': 0}
利用for循环将所有信息存在一个空列表中
all_list = []
for province_data in all_provinces:
province_name = province_data['name']
all_cities = province_data['children']
for city_data in all_cities:
city_name = city_data['name']
city_total = city_data['total']
province_result = {'province': province_name, 'city': city_name,'update_time': update_time}
province_result.update(city_total)
all_list.append(province_result)
转换成dataframe数据结构
df = pd.DataFrame(all_list)
print(df.head())
city confirm dead heal province suspect update_time
0 武汉 10117 414 454 湖北 0 2020-02-06 15:04:04
1 孝感 1886 25 9 湖北 0 2020-02-06 15:04:04
2 黄冈 1807 29 60 湖北 0 2020-02-06 15:04:04
3 随州 834 9 9 湖北 0 2020-02-06 15:04:04
4 荆州 801 10 18 湖北 0 2020-02-06 15:04:04
保存为csv文件
df.to_csv('data.csv', index=False,encoding="utf_8_sig")
import pandas as pd
import requests
import json
def get_data():
url = 'https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5'
area = requests.get(url).json()
data = json.loads(area['data'])
update_time = data['lastUpdateTime']
all_counties = cn_data['areaTree']
all_list = []
for country_data in all_counties:
if country_data['name'] != '中国':
continue
else:
all_provinces = country_data['children']
for province_data in all_provinces:
province_name = province_data['name']
all_cities = province_data['children']
for city_data in all_cities:
city_name = city_data['name']
city_total = city_data['total']
province_result = {'province': province_name, 'city': city_name,'update_time': update_time}
province_result.update(city_total)
all_list.append(province_result)
df = pd.DataFrame(all_list)
df.to_csv('data.csv', index=False,encoding="utf_8_sig")
if __name__ == '__main__':
get_data()
赞 赏 作 者
Python中文社区作为一个去中心化的全球技术社区,以成为全球20万Python中文开发者的精神部落为愿景,目前覆盖各大主流媒体和协作平台,与阿里、腾讯、百度、微软、亚马逊、开源中国、CSDN等业界知名公司和技术社区建立了广泛的联系,拥有来自十多个国家和地区数万名登记会员,会员来自以工信部、清华大学、北京大学、北京邮电大学、中国人民银行、中科院、中金、华为、BAT、谷歌、微软等为代表的政府机关、科研单位、金融机构以及海内外知名公司,全平台近20万开发者关注。
▼ 点击成为社区注册会员 喜欢文章,点个在看