当前位置:   article > 正文

手把手教你制作一款具有疫情查询功能的软件_自制信息查询软件exe

自制信息查询软件exe

一、背景:

2020年初,新冠状肺炎爆发,很多地区每天都会涌现出一批新增确诊或是新增疑似患者,但是新闻数据过于繁杂,想要找到自己想知道的省份的疫情信息需要花费一些时间,于是想到制作一个具有疫情查询功能的软件,可以简单方便的进行查询。

二、实现手段

计划分两步完成:
1、编写疫情代码:包括疫情数据爬取、全国数据展示、省份具体数据查询三个功能
2、将代码封装成软件

三、代码编写

1、爬取疫情信息部分:

想要获取到实时的信息,肯定要对页面进行实时爬取,这里用的是腾讯新闻的页面(这种页面并不太稳定,如果其改变了源码,那相应的程序也要更改),也可以用API,那样要稳定一些,不过腾讯新闻的API不免费,免费的那些又十分拥挤,所以最终我还是采用的爬取页面的方式。
代码如下:

import requests
import json
def get_data():
    url = 'https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5&callback=jQuery341001657575837432268_1581070969707&_=1581070969708'
    headers = {'user-agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Mobile Safari/537.36'}
    res = requests.get(url, headers=headers).text
    a = res.split('jQuery341001657575837432268_1581070969707(')[1].split(')')[0]
    c = json.loads(a)
    data = json.loads(c['data'])
    return data
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

2、全国信息展示部分:

这部分代码很简单,就不做什么说明了

def print_data_china():
    data = get_data()
    print('统计截至时间:'+str(data['lastUpdateTime']))
    print('全国确诊人数:'+str(data['chinaTotal']['confirm']))
    print('相较于昨天确诊人数:'+str(data['chinaAdd']['confirm']))
    print('全国疑似病例:'+str(data['chinaTotal']['suspect']))
    print('相较于昨天疑似人数:'+str(data['chinaAdd']['suspect']))
    print('全国治愈人数:'+str(data['chinaTotal']['heal']))
    print('相较于昨天治愈人数:'+str(data['chinaAdd']['heal']))
    print('全国死亡人数:'+str(data['chinaTotal']['dead']))
    print('相较于昨天死亡人数:'+str(data['chinaAdd']['dead']))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

3、省份信息查询部分

核心就是两个for循环,将你想要查询的省份信息输入,然后得到其输出

def print_data_path_china():
    data = get_data()['areaTree'][0]['children']
    path_data = []
    path_china = []
    path = str(input('请输入你要查询的省份:'))
    for i in data:
        path_china.append(i['name'])
        path_data.append(i['children'])
    if path in path_china:
        num = path_china.index(path)
        data_path = path_data[num]

        print('{:^10}{:^10}{:^10}{:^10}{:^10}'.format('地区', '累计确诊人数', '相较于昨日确诊人数', '累计治愈人数', '累计死亡人数'))
        for i in data_path:
            name = i['name']
            today = i['today']
            total = i['total']
            a = '{:^10}{:^15}{:^15}{:^15}{:^15}'
            print(a.format(name, str(total['confirm']), str(today['confirm']), str(total['heal']), str(total['dead'])))

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

4、完整代码

import requests
import json
def get_data():
    url = 'https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5&callback=jQuery341001657575837432268_1581070969707&_=1581070969708'
    headers = {'user-agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Mobile Safari/537.36'}
    res = requests.get(url, headers=headers).text
    a = res.split('jQuery341001657575837432268_1581070969707(')[1].split(')')[0]
    c = json.loads(a)
    data = json.loads(c['data'])
    return data

def print_data_china():
    data = get_data()
    print('统计截至时间:'+str(data['lastUpdateTime']))
    print('全国确诊人数:'+str(data['chinaTotal']['confirm']))
    print('相较于昨天确诊人数:'+str(data['chinaAdd']['confirm']))
    print('全国疑似病例:'+str(data['chinaTotal']['suspect']))
    print('相较于昨天疑似人数:'+str(data['chinaAdd']['suspect']))
    print('全国治愈人数:'+str(data['chinaTotal']['heal']))
    print('相较于昨天治愈人数:'+str(data['chinaAdd']['heal']))
    print('全国死亡人数:'+str(data['chinaTotal']['dead']))
    print('相较于昨天死亡人数:'+str(data['chinaAdd']['dead']))

def print_data_path_china():
    data = get_data()['areaTree'][0]['children']
    path_data = []
    path_china = []
    path = str(input('请输入你要查询的省份:'))
    for i in data:
        path_china.append(i['name'])
        path_data.append(i['children'])
    if path in path_china:
        num = path_china.index(path)
        data_path = path_data[num]

        print('{:^10}{:^10}{:^10}{:^10}{:^10}'.format('地区', '累计确诊人数', '相较于昨日确诊人数', '累计治愈人数', '累计死亡人数'))
        for i in data_path:
            name = i['name']
            today = i['today']
            total = i['total']
            a = '{:^10}{:^15}{:^15}{:^15}{:^15}'
            print(a.format(name, str(total['confirm']), str(today['confirm']), str(total['heal']), str(total['dead'])))
if __name__ == '__main__':
    get_data()
    print_data_china()
    print_data_path_china()
    input('查询成功,输入任意字符后结束')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47

5、效果展示

在这里插入图片描述

四、封装成软件

1、准备工作:

一、安装pyinstaller
如果你用的是pycarm,直接在setting里面找到pyinstaller的库安装即可。
有一点要注意的是,并非所有的python都支持pyinstaller,目前的python3.8就不支持(以后应该会支持)。
方法1:命令行安装

pip3 install pyinstaller -i http://mirrors.aliyun.com/pypi/simple  --trusted-host mirrors.aliyun.com

  • 1
  • 2

方法2:官网下载
下载网址在这里
在这里插入图片描述
方法3:[在github上下载](https://github.com/pyinstaller/pyinstaller)
然后解压。之后在cmd中切换到解压目录下(切换目录方法可以点这里),进行安装,安装语法为:python setup.py install

二、安装pywin32-ctypes
下载安装完成pyinstaller后,还需要下载pywin32-ctypes,不然会出现这种问题:
在这里插入图片描述
直接命令行安装即可

pip install pywin32-ctypes
  • 1

如下图所示便可以了
在这里插入图片描述

2、封装操作

1、选定你需要封装成exe的python文件,因为之前没截图,我这里就随便写了一个做演示用:
在这里插入图片描述
2、将该文件放到pyinstaller的解压目录下面
在这里插入图片描述
3、在CMD命令行进入该目录,并执行命令:python pyinstaller.py -F test_app.py
其中,-F是参数,可以有其他参数,列举几个其作用如下:
在这里插入图片描述
4、执行完3后,我们需要到解压目录下找到一个和你python文件同名的文件夹。
在这里插入图片描述

在该文件夹下面找到dist文件,里面便是已经封装好的exe文件了。在这里插入图片描述

3、自定义软件图标

前面已经讲过了该如何将Python代码转化成一个可执行的exe文件,但是这样创建的exe的图标是默认图标,那么该如何将图标换成自己想要的图片呢?

1、首先选择一张你想用的图片,正常的图片是没法用作图标的,我们需要先将格式转化为图标格式,这一步很简单,直接百度将图片转化为.ico格式,找个网站就能实现。

2、将图标格式的图片(即.ico后缀的图片)存在某个地方,记住其存储路径
如图所示,我是将其直接放在了e盘下面。
在这里插入图片描述

3、将前文将python代码转换为exe文件的命令行代码修改为:

python pyinstaller.py -F  -i E:\test.ico test_app.py
  • 1

如下图所示
在这里插入图片描述
加了一个-i 图片路径的代码

这样便完成了对exe自定义图标的操作,效果图如下
在这里插入图片描述

五、最终效果展示

1、软件展示

在这里插入图片描述
在这里插入图片描述

2、实际操作效果

在这里插入图片描述
至此,一款具有疫情查询功能的软件就制作完成了。

注意事项:

有时候exe打开后会闪退,这可能是因为执行完程序后自动关闭了。这时候只需要在程序尾部添加一行代码即可:

print("输入任意字符后退出")
  • 1

正常代码执行的时候,这句可有可无,封装成软件展示的时候,这句就很关键啦。

另外我将封装后的软件放到这里了,下载只需要两积分,如果是在没有积分的可以评论区留下邮箱,看到后我会发给你。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/580105
推荐阅读
相关标签
  

闽ICP备14008679号