Qt+python+爬虫
爬虫API腾讯疫情接口QT显示
自己一个做的一个小东西,很多部分不太完善,不喜勿喷!
如果大神有小建议和指点的话,欢迎欢迎欢迎!!!
原理介绍
- 通过request请求,获得数据用Json解析数据,对数据提取,将这个写成一个py文件留出用于QT文件的接口。
- 用pyqt_tool制作qt界面并生成py文件。
- 将两个结合到一块,最后用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+爬虫相关推荐
- Python 爬虫修养-处理动态网页
Python 爬虫修养-处理动态网页 本文转自:i春秋社区 0x01 前言 在进行爬虫开发的过程中,我们会遇到很多的棘手的问题,当然对于普通的问题比如 UA 等修改的问题,我们并不在讨论范围,既然要将 ...
- python拿什么做可视化界面好-python爬虫如何制作可视化界面?(pyqt5环境配置篇)...
却道天凉好个秋~ pyqt5+python+qtdesigner+pycharm制作一个可视化的GUI爬虫工具 前言: 最近闲来无聊又开始了py之路,这次需要的是制作一个贴吧的关键词搜索相关帖子的工具 ...
- Python学习教程:Python爬虫抓取技术的门道
Python学习教程:Python爬虫抓取技术的门道 web是一个开放的平台,这也奠定了web从90年代初诞生直至今日将近30年来蓬勃的发展.然而,正所谓成也萧何败也萧何,开放的特性.搜索引擎以及简单 ...
- python爬虫什么意思-Python为什么叫爬虫?Python与爬虫有什么关系?
今天听到有人问:Python为什么叫爬虫?我的脑袋里第一反应不是答案,而是为什么有人会问这个问题,我想大家对Python的概念有点模糊,将Python与爬虫混淆,所以今天我向大家解释一下. 什么是Py ...
- python爬虫学习
python爬取当当页面数据 import requests from pyquery import PyQuery import csv import time# 当当网爬虫测试 class DDS ...
- 四小时学python爬虫爬取信息系列(第一天)
四小时学python爬虫爬取信息系列(第一天)(全是干货) 1.安装requests库(可以在电脑python,我是进入anaconda我建的虚拟环境) anaconda虚拟环境法流程: conda ...
- python爬虫之爬取捞月狗直播信息
诶,本人一个大三真皮沙发男.最近迷上了斗鱼大司马,这个就很有意思,你知道吧. 就想写一个python爬虫来搞一波事情,觉得捞月狗这个平台还不错,就花了点时间写了一个用pyqt5做UI界面的爬虫.顿时就 ...
- python爬虫——实战篇
python爬虫--实战篇 2021.7.20晚已更新 注:注释和说明已在代码中注释 python爬虫实战篇 笔趣阁小说及其网址爬取 4k图片网站图片爬取 简历模板爬取 自动填体温小程序 待补充 笔趣 ...
- Python爬虫爬取智联招聘(进阶版)
运行平台: Windows Python版本: Python3.6 IDE: Sublime Text 其他工具: Chrome浏览器 0.写在前面的话 本文是基于基础版上做的修改,如 ...
最新文章
- 无监督特定类别的网格重建(U-CMR) | ECCV
- 语句中如何结束本循环进入下一循环_第33 p,for遍历,循环取值最方便
- HTML之表格篇——表格的嵌套
- java实现缓存方式_【Java】【器篇】【缓存】一个轻量的缓存实现方式
- [vue] 怎么配置使vue2.0+支持TypeScript写法?
- 关于x86、x86_64/x64、amd64和arm64/aarch64
- 曹讯 计算机摄像学,计算摄像学: 全光视觉信息的计算采集
- Swift 后端开发
- 职教高考专业课考计算机,职教高考和普通高考一样吗
- 现代化多媒体教室的计算机系统,多媒体教室系统建设方案
- 芯片组c236服务器主板,至强E3-1230 v5完美座驾,微星推出全功能C236工作站主板
- 绕线画算法python_绕字的意思、绕的繁体字、绕的笔顺笔画、绕字部首和繁体字绕的意思...
- 学习笔记 Tianmao 篇 recyclerView 的自定义使用
- 落地干货:三个核心步骤,做好销售管理
- 推荐几款常用在线代码转换工具
- XCel 项目总结 - Electron 与 Vue 的性能优化
- 女性吃什么食物会导致不孕?
- Cobalt Strike 域内渗透
- 智能扫地机器人好用吗?行业排名TOP5扫地机器人推荐
- Java与数据库中的datetime Timestamp以及String之间的转换