爬虫API腾讯疫情接口QT显示

自己一个做的一个小东西,很多部分不太完善,不喜勿喷!
如果大神有小建议和指点的话,欢迎欢迎欢迎!!!

原理介绍

  1. 通过request请求,获得数据用Json解析数据,对数据提取,将这个写成一个py文件留出用于QT文件的接口。
  2. 用pyqt_tool制作qt界面并生成py文件。
  3. 将两个结合到一块,最后用pyinstaller打包生成exe文件

代码展示

1. accquiredata.py模块
用于抓取API接口,并对于数据处理的包

class accquire(object):d = {}f = {}date_list = []  # 日期confirm_list = []  # 确诊suspect_list = []  # 疑似dead_list = []  # 死亡heal_list = []  # 治愈def __init__(self):self.catch_distribution()# self.catch_daily()def catch_distribution(self):"""抓取行政区域确诊分布数据"""url = 'https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5&callback=&_=%d'%int(time.time()*1000)data = json.loads(requests.get(url=url).json()['data'])# print(data.keys())self.d = data['areaTree'][0]['children']self.f = [item['name'] for item in self.d]def catch_daily(self):"""抓取每日确诊和死亡数据"""url = 'https://view.inews.qq.com/g2/getOnsInfo?name=wuwei_ww_cn_day_counts&callback=&_=%d'%int(time.time()*1000)data = json.loads(requests.get(url=url).json()['data'])data.sort(key=lambda x:x['date'])for item in data:month, day = item['date'].split('/')self.date_list.append(datetime.strptime('2020-%s-%s'%(month, day), '%Y-%m-%d'))self.confirm_list.append(int(item['confirm']))self.suspect_list.append(int(item['suspect']))self.dead_list.append(int(item['dead']))self.heal_list.append(int(item['heal']))def Find_Data(self,name):na = name.split(',')c = self.f.index(na[0])data = {}data[na[0]] = self.d[c]['total']['confirm']for item in self.d[c]['children']:if item['name'] not in data:data[item['name']]={'today':item['today'],'total':item['total']}
#                data.update({item['name']:item['total']['confirm']})return data[na[0]],data[na[1]]['total']['confirm'],data[na[1]]['total']['suspect']def plot_daily(self):"""绘制每日确诊和死亡数据"""self.catch_daily() # 获取数据

2. PyQT_Form.py模块
用于创建qt界面

class Ui_Form(object):def setupUi(self, Form):Form.setObjectName("Form")Form.resize(1083, 784)palette = QtGui.QPalette()brush = QtGui.QBrush(QtGui.QColor(85, 0, 255))brush.setStyle(QtCore.Qt.SolidPattern)palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)brush = QtGui.QBrush(QtGui.QColor(85, 0, 255))brush.setStyle(QtCore.Qt.SolidPattern)palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)brush = QtGui.QBrush(QtGui.QColor(85, 0, 255))brush.setStyle(QtCore.Qt.SolidPattern)palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)Form.setPalette(palette)self.pushButton = QtWidgets.QPushButton(Form)self.pushButton.setGeometry(QtCore.QRect(230, 100, 91, 31))self.pushButton.setObjectName("pushButton")self.city = QtWidgets.QLineEdit(Form)self.city.setEnabled(True)self.city.setGeometry(QtCore.QRect(160, 150, 211, 31))self.city.setText("")self.city.setClearButtonEnabled(False)self.city.setObjectName("city")self.lineEdit_2 = QtWidgets.QLineEdit(Form)self.lineEdit_2.setGeometry(QtCore.QRect(510, 150, 331, 51))self.lineEdit_2.setPlaceholderText("")self.lineEdit_2.setObjectName("lineEdit_2")self.lineEdit_1 = QtWidgets.QLineEdit(Form)self.lineEdit_1.setGeometry(QtCore.QRect(510, 70, 331, 51))self.lineEdit_1.setPlaceholderText("")self.lineEdit_1.setObjectName("lineEdit_1")self.lineEdit_4 = QtWidgets.QLineEdit(Form)self.lineEdit_4.setGeometry(QtCore.QRect(510, 230, 331, 51))self.lineEdit_4.setPlaceholderText("")self.lineEdit_4.setObjectName("lineEdit_4")self.pushButton_2 = QtWidgets.QPushButton(Form)self.pushButton_2.setGeometry(QtCore.QRect(200, 300, 93, 28))self.pushButton_2.setObjectName("pushButton_2")self.gridLayoutWidget = QtWidgets.QWidget(Form)self.gridLayoutWidget.setGeometry(QtCore.QRect(150, 340, 701, 351))self.gridLayoutWidget.setObjectName("gridLayoutWidget")self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget)self.gridLayout.setContentsMargins(0, 0, 0, 0)self.gridLayout.setObjectName("gridLayout")self.retranslateUi(Form)self.pushButton.clicked.connect(Form.pushButton_click)self.pushButton_2.clicked.connect(Form.plot_click)QtCore.QMetaObject.connectSlotsByName(Form)def retranslateUi(self, Form):_translate = QtCore.QCoreApplication.translateForm.setWindowTitle(_translate("Form", "Form"))self.pushButton.setText(_translate("Form", "确定"))self.city.setPlaceholderText(_translate("Form", "请输入城市(如 陕西,西安)"))self.lineEdit_2.setText(_translate("Form", "省总数目:   "))self.lineEdit_1.setText(_translate("Form", "确诊数目:   "))self.lineEdit_4.setText(_translate("Form", "疑似病例:   "))self.pushButton_2.setText(_translate("Form", "走势"))

3. main.py
最后是主程序啦,用于把上述两个程序结合到一块就是主程序啦

class MyPyQT_Form(QtWidgets.QWidget,Ui_Form,accquire):def __init__(self):super(MyPyQT_Form,self).__init__()self.setupUi(self)# pg.setConfigOption('background', 'w')self.pw = pg.PlotWidget(title = "病毒人数曲线")self.pw.enableMouse()self.pw.setLabel(axis = "left", text = "/people")self.pw.setLabel(axis = "bottom",text = "time")self.pw.addLegend()# self.pw.setLable(axis="left", text="/people")self.gridLayout.addWidget(self.pw)# self.catch_daily()self.catch_distribution()def pushButton_click(self):self.a = self.city.text()b,q,f= self.Find_Data(self.a)q = "确诊数目:  "+str(q)b = "省总数目:  "+str(b)f = "疑似病例:  "+str(f)self.lineEdit_1.setText(q)self.lineEdit_2.setText(b)self.lineEdit_4.setText(f)returndef plot_click(self):self.plot()returndef plot(self):self.plot_daily()self.pw.plot(self.confirm_list,pen=(255,0,0), name="identify")self.pw.plot(self.suspect_list, pen=(0,255,0), name="suspect")self.pw.plot(self.dead_list, pen=(0,25,255), name="dead")self.pw.plot(self.heal_list, pen=(175,0,255), name="deal")def paintEvent(self, event):# set background_imgpainter = QPainter(self)painter.drawRect(self.rect())pixmap = QPixmap("./img/encourage.jpg")painter.drawPixmap(self.rect(), pixmap)if __name__ == '__main__':app = QtWidgets.QApplication(sys.argv)my_pyqt_form = MyPyQT_Form()my_pyqt_form.paintEngine()my_pyqt_form.show()sys.exit(app.exec_())

界面展示


功能说明
1.可以查询全国的地区的情况
tip:输入“,”的时候需要以英文的形式,如:陕西,西安
2.可以看清楚从病毒传染开始到现在的走势

Qt+python+爬虫相关推荐

  1. Python 爬虫修养-处理动态网页

    Python 爬虫修养-处理动态网页 本文转自:i春秋社区 0x01 前言 在进行爬虫开发的过程中,我们会遇到很多的棘手的问题,当然对于普通的问题比如 UA 等修改的问题,我们并不在讨论范围,既然要将 ...

  2. python拿什么做可视化界面好-python爬虫如何制作可视化界面?(pyqt5环境配置篇)...

    却道天凉好个秋~ pyqt5+python+qtdesigner+pycharm制作一个可视化的GUI爬虫工具 前言: 最近闲来无聊又开始了py之路,这次需要的是制作一个贴吧的关键词搜索相关帖子的工具 ...

  3. Python学习教程:Python爬虫抓取技术的门道

    Python学习教程:Python爬虫抓取技术的门道 web是一个开放的平台,这也奠定了web从90年代初诞生直至今日将近30年来蓬勃的发展.然而,正所谓成也萧何败也萧何,开放的特性.搜索引擎以及简单 ...

  4. python爬虫什么意思-Python为什么叫爬虫?Python与爬虫有什么关系?

    今天听到有人问:Python为什么叫爬虫?我的脑袋里第一反应不是答案,而是为什么有人会问这个问题,我想大家对Python的概念有点模糊,将Python与爬虫混淆,所以今天我向大家解释一下. 什么是Py ...

  5. python爬虫学习

    python爬取当当页面数据 import requests from pyquery import PyQuery import csv import time# 当当网爬虫测试 class DDS ...

  6. 四小时学python爬虫爬取信息系列(第一天)

    四小时学python爬虫爬取信息系列(第一天)(全是干货) 1.安装requests库(可以在电脑python,我是进入anaconda我建的虚拟环境) anaconda虚拟环境法流程: conda ...

  7. python爬虫之爬取捞月狗直播信息

    诶,本人一个大三真皮沙发男.最近迷上了斗鱼大司马,这个就很有意思,你知道吧. 就想写一个python爬虫来搞一波事情,觉得捞月狗这个平台还不错,就花了点时间写了一个用pyqt5做UI界面的爬虫.顿时就 ...

  8. python爬虫——实战篇

    python爬虫--实战篇 2021.7.20晚已更新 注:注释和说明已在代码中注释 python爬虫实战篇 笔趣阁小说及其网址爬取 4k图片网站图片爬取 简历模板爬取 自动填体温小程序 待补充 笔趣 ...

  9. Python爬虫爬取智联招聘(进阶版)

    运行平台: Windows   Python版本: Python3.6   IDE: Sublime Text    其他工具:  Chrome浏览器 0.写在前面的话 本文是基于基础版上做的修改,如 ...

最新文章

  1. 无监督特定类别的网格重建(U-CMR) | ECCV
  2. 语句中如何结束本循环进入下一循环_第33 p,for遍历,循环取值最方便
  3. HTML之表格篇——表格的嵌套
  4. java实现缓存方式_【Java】【器篇】【缓存】一个轻量的缓存实现方式
  5. [vue] 怎么配置使vue2.0+支持TypeScript写法?
  6. 关于x86、x86_64/x64、amd64和arm64/aarch64
  7. 曹讯 计算机摄像学,计算摄像学: 全光视觉信息的计算采集
  8. Swift 后端开发
  9. 职教高考专业课考计算机,职教高考和普通高考一样吗
  10. 现代化多媒体教室的计算机系统,多媒体教室系统建设方案
  11. 芯片组c236服务器主板,至强E3-1230 v5完美座驾,微星推出全功能C236工作站主板
  12. 绕线画算法python_绕字的意思、绕的繁体字、绕的笔顺笔画、绕字部首和繁体字绕的意思...
  13. 学习笔记 Tianmao 篇 recyclerView 的自定义使用
  14. 落地干货:三个核心步骤,做好销售管理
  15. 推荐几款常用在线代码转换工具
  16. XCel 项目总结 - Electron 与 Vue 的性能优化
  17. 女性吃什么食物会导致不孕?
  18. Cobalt Strike 域内渗透
  19. 智能扫地机器人好用吗?行业排名TOP5扫地机器人推荐
  20. Java与数据库中的datetime Timestamp以及String之间的转换

热门文章

  1. mysql索引相关面试题
  2. cookie和sessionStorage和localStorage的存取--Vue-router带参数跳转页面
  3. [IL2CPP] IL2CPP 减速(部分解决)
  4. vue组件通信provide/inject
  5. 戴德金--连续性和无理数--我自己做的中文翻译第9页
  6. anaconda配置python环境
  7. 前端笔记80——获取随机数
  8. OpenNI结合Unity3D Kinect进行体感游戏开发
  9. 你放心输出使用在线益智游戏
  10. Android四大组件Content Provider使用实例