ye土土
文章15
标签26
分类6

用Python查询肺炎疫情

代码如下:

import requests,json
from tkinter import *
import base64,os

#获取全球疫情数据
def get_data():
    #这里使用腾讯api
    api = 'https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5'
    data = requests.get(api)
    #要使用utf8不然会中文乱码
    data.encoding = 'utf-8'
    #需loads两次不知道为什么
    data = json.loads(data.text)
    data = json.loads(data['data'])["areaTree"]
    #print(data)
    return data
#通用查询
def analytical_data(地区,data=get_data()):
    data2 = 0
    #设置temp变量用来省略不需要的循环,提高速度
    temp = 0
    #先查询国家
    #遍历所有国家
    for i in data:
        if i['name'] == 地区:
            #先检测如果temp为"1"直接退出(由于是第一个其实可以去掉)
            if temp == 1:
                break
            #记录为data2
            data2 = i
            #打印确诊人数
            #print('确诊人数:'+str(i["total"]["confirm"])+'人')
            #若查询成功将temp标记为"1"
            temp = 1
            break
    #如果查询国家失败查询省份
    if temp==0:
        #遍历所有省份
        for i in data[0]["children"]:
            if i['name'] == 地区:
                #记录为data2
                data2 = i
                #打印确诊人数
                #print('确诊人数:'+str(i["total"]["confirm"])+'人')
                #若查询成功将temp标记为"1"
                temp = 1
                break
    #如果查询国家失败查询城市
    if temp==0:
        for i in data[0]["children"]:
            #遍历所有省份
            for j in i["children"]:
                #遍历每个省份的全部城市
                if j['name'] == 地区:
                    #若查询成功将temp标记为"1"
                    temp = 1
                    #记录为data2
                    data2 = j
                    #打印确诊人数
                    #print('确诊人数:'+ str(j["total"]["confirm"])+'人')
                    break
                #由于双重循环需要退出两次
                if temp == 1:
                    break
    #返回data2
    return data2

def main():
    data = analytical_data(inputbox.get())
    t.delete('1.0', 'end')
    try:
        var = '关于{}的最新疫情信息如下:\n确诊人数:{}\n疑似人数:{}\n治愈人数:{}\n死亡人数:{}\n新增确诊:{}\n由于API问题疑似可能不准\n武汉加油!中国加油!'
        var = var.format(inputbox.get(),str(data["total"]["confirm"])+'人',str(data["total"]["suspect"]) + '人',str(data["total"]["heal"])+'人',str(data["total"]["dead"])+'人',str(data["today"]["confirm"])+'人')
    except:
        var = '未找到地区:'+inputbox.get()
    t.insert('end',var)
window = Tk()
window.title('新冠肺炎疫情查询')
window.geometry('375x330')
window.resizable(0,0)
diqu_text = Label(window,text='地区',width=3,height=1,font=('微软雅黑',12))
diqu_text.place(x=50,y=30, anchor='nw')
inputbox = Entry(window,width=10,font=('微软雅黑',16))
inputbox.place(x=110,y=30, anchor='nw')
t = Text(window,height=11,width=35,font=('微软雅黑',10))
t.place(x=40,y=80)
b = Button(window,text='查询',width=6,height=1,font=('微软雅黑',10),command=main)
b.place(x=250,y=29, anchor='nw')

window.mainloop()

'''
                   _ooOoo_
                  o8888888o
                  88" . "88
                  (| -_- |)
                  O\  =  /O
               ____/`---'\____
             .'  \\|     |//  `.
            /  \\|||  :  |||//  \
           /  _||||| -:- |||||-  \
           |   | \\\  -  /// |   |
           | \_|  ''\---/''  |   |
           \  .-\__  `-`  ___/-. /
         ___`. .'  /--.--\  `. . __
      ."" '<  `.___\_<|>_/___.'  >'"".
     | | :  `- \`.;`\ _ /`;.`/ - ` : | |
     \  \ `-.   \_ __\ /__ _/   .-` /  /
======`-.____`-.___\_____/___.-`____.-'======
                   `=---='
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
            佛祖保佑       永无BUG
'''

转载至 啊不都的博客

已征得原作者同意转载

原文链接