Python 制作天眼查小程序
这是「进击的Coder」的第 788 篇技术分享
作者:萝卜大杂烩
来源:萝卜大杂烩
“
阅读本文大概需要 9 分钟。
”
今天我们一起来制作一个天眼查 GUI 程序,开宗明义,我们先来看下最终的效果
这次的 GUI 程序,我们使用的框架是PyQt5
,该框架拥有比tkinter
更为丰富的内置组件,在界面美化方面,貌似也更胜一筹!
从上图也可以看出,我们的目标还是蛮远大的,最终我们希望可以完成一个工具集合,把我们日常当中常用的功能都集成的该 GUI 程序中,比如天眼查公司信息,知乎用户知识图谱,B 视频弹幕抓取等等。
好了,今天我们先完成天眼查的功能吧~
界面搭建
大家也都看到了,本 GUI 程序的整体界面还是不丑的(原谅我只敢用不丑两个字),虽然可能目前仅仅是看起来不丑,但是背后的美化工作还是非常繁琐的。
这里萝卜哥也是借鉴了网上大神的基础代码,州的先生[1]在PyQt5
方面有颇多造诣,大家也可以多多关注哦!
整体布局
首先我们来大致看一下界面的布局情况
界面总体分为左侧的 Widget 和右侧的 Widget
左侧 Widget 部分代码
def leftWidget(self):self.left_close = QtWidgets.QPushButton(qtawesome.icon('fa.close', color='white'), "") # 关闭按钮self.left_visit = QtWidgets.QPushButton(qtawesome.icon('fa.circle-o', color='white'), "") # 空白按钮self.left_mini = QtWidgets.QPushButton(qtawesome.icon('fa.minus', color='white'), "") # 最小化按钮self.left_label_1 = QtWidgets.QPushButton("网络抓取")self.left_label_1.setObjectName('left_label')self.left_label_2 = QtWidgets.QPushButton("待开发")self.left_label_2.setObjectName('left_label')self.left_label_3 = QtWidgets.QPushButton("联系与帮助")self.left_label_3.setObjectName('left_label')self.left_button_1 = QtWidgets.QPushButton(qtawesome.icon('fa.eye', color='white'), "天眼查")self.left_button_1.setObjectName('left_button')self.left_button_2 = QtWidgets.QPushButton(qtawesome.icon('fa.bullhorn', color='white'), "知乎")self.left_button_2.setObjectName('left_button')self.left_button_3 = QtWidgets.QPushButton(qtawesome.icon('fa.bold', color='white'), "B站")self.left_button_3.setObjectName('left_button')...
左侧部分,主要是一些功能按钮的布局,我们可以在一个函数当中完成这些
对于右侧 Widget,我们需要区分不同的功能,比如天眼查代码
def tianyanchaWidget(self):self.left_button_widget_1 = QtWidgets.QWidget()self.left_button_widget_1.setGeometry(QtCore.QRect(10, 10, 591, 461))self.left_button_widget_1.setObjectName("left_button_1")self.gridLayout = QtWidgets.QGridLayout(self.left_button_widget_1)self.gridLayout.setContentsMargins(0, 0, 0, 0)self.gridLayout.setObjectName("gridLayout")self.lineEdit = QtWidgets.QLineEdit()self.lineEdit.setObjectName("lineEdit")self.gridLayout.addWidget(self.lineEdit, 0, 1, 1, 7)self.pushButton = QtWidgets.QPushButton(qtawesome.icon('fa.search', color='black'), "Search")self.pushButton.setObjectName("pushButton")self.gridLayout.addWidget(self.pushButton, 0, 0, 1, 1)# 下载按钮self.downButton = QtWidgets.QPushButton(qtawesome.icon('fa.download', color='black'), "Download")self.downButton.setObjectName("downButton")self.gridLayout.addWidget(self.downButton, 0, 8, 1, 1)self.textEdit = QtWidgets.QTextEdit(self.left_button_widget_1)self.textEdit.setObjectName("textEdit")self.gridLayout.addWidget(self.textEdit, 3, 0, 1, 9)self.right_layout.addWidget(self.left_button_widget_1, 0, 0, 1, 9)
为不同的功能设置不同的QtWidgets.QWidget()
,这样方便我们后面点击左侧不同按钮时,右侧界面跟着切换
大致的布局就是这些,当然还有一些界面美化的工作,我们简单看下
界面美化
美化工作我们主要使用函数setStyleSheet
来进行,其实也就是为各个组件添加样式,类似于 Web 应用的 CSS
优化函数
def leftStyle(self):self.left_close.setFixedSize(15, 15) # 设置关闭按钮的大小self.left_visit.setFixedSize(15, 15) # 设置按钮大小self.left_mini.setFixedSize(15, 15) # 设置最小化按钮大小self.left_close.setStyleSheet('''QPushButton{background:#F76677;border-radius:5px;}QPushButton:hover{background:red;}''')self.left_visit.setStyleSheet('''QPushButton{background:#F7D674;border-radius:5px;}QPushButton:hover{background:yellow;}''')self.left_mini.setStyleSheet('''QPushButton{background:#6DDF6D;border-radius:5px;}QPushButton:hover{background:green;}''')self.left_widget.setStyleSheet('''QPushButton{border:none;color:white;}QPushButton#left_label{border:none;border-bottom:1px solid white;font-size:18px;font-weight:700;font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;}QPushButton#left_button:hover{border-left:4px solid red;font-weight:700;}QWidget#left_widget{background:gray;border-top:1px solid white;border-bottom:1px solid white;border-left:1px solid white;border-top-left-radius:10px;border-bottom-left-radius:10px;}''')
可以看到,美化的过程也确实就是添加样式的过程,如果对于 CSS 比较熟悉的小伙伴,在这里应该也不陌生吧
好了,界面部分大致就是这些,下面我们来看看天眼查信息的爬取部分
天眼查爬虫
天眼查相信大家都比较熟悉,一个用于查询公司或者个人相关信息的网站。
获取信息
由于该网站的很多信息也都是爬虫获取的,所以其反爬手段也是极其高明,这里我们没有对 Web 端进行爬取,而是选择了小程序,通过对天眼查小程序的抓包,可以获取到其请求公司的时候所使用的header
以及对应的URL
,我们拿到之后通过Postman
进行测试如下
❝
由于本篇文章重点不是爬虫,所以具体的爬取过程没有详细给出,如果小伙伴们需要,本篇点赞超过 10 个,就安排出一篇文章详细写一下!
我们只需要在请求上面的URL
的时候,在header
当中携带对应的Authorization
信息就可以,而且经过测试,该Authorization
信息的过期时间非常长,长到我还没有摸清楚到底多久会过期,反正获取了一个之后,就一直可以使用,真好!
代码编写
拿到请求方法时候,我们就可以编写代码了,这反而是比较简单的一步
def query(self):company_name = self.lineEdit.text()if not company_name:QMessageBox.information(self, "Error", "公司名称不能为空",QMessageBox.Yes)return# 获取基本信息headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36','version': 'TYC-XCX-WX','Host': 'api9.tianyancha.com','Authorization': '0###2088812821785822###1661951360266###fec9a76739ba0efd0a7f8b0b4a9a0074',}url = f'https://api9.tianyancha.com/services/v3/search/sNorV3/{company_name}'response = requests.get(url, headers=headers)response_json, data = response.json(), dict()if response_json['state'] == 'ok':data = response_json.get('data', {})...
上面的函数会返回处理过的公司信息数据,然后我们通过 Button 的绑定事件来调用该函数,并把数据输出到组件textEdit
中
self.pushButton.clicked.connect(self.query)
self.textEdit.setText(company_info_str)
至此,我们这个天眼查工具就完成了~
结果展示
下面我们来看看最终的效果吧
持续关注,我们后面再继续集成开发其他功能哦!
好了,这就是今天分享的全部内容,喜欢就点个赞吧~
参考资料
[1]
州的先生的网站: https://zmister.com/
End
崔庆才的新书《Python3网络爬虫开发实战(第二版)》已经正式上市了!书中详细介绍了零基础用 Python 开发爬虫的各方面知识,同时相比第一版新增了 JavaScript 逆向、Android 逆向、异步爬虫、深度学习、Kubernetes 相关内容,同时本书已经获得 Python 之父 Guido 的推荐,目前本书正在七折促销中!
内容介绍:《Python3网络爬虫开发实战(第二版)》内容介绍
扫码购买
好文和朋友一起看~
Python 制作天眼查小程序相关推荐
- 用Python制作汇率转换小程序
公众号后台回复"图书",了解更多号主新书内容 来源:菜J学Python 作者:王小王-123 01 引言 我记得有一个初识Python之汇率转换的文章,在那个程序里面可以运用一些基 ...
- python制作更换壁纸小程序
一.功能简介 1.利用爬虫技术从网络上爬取图片 2.将图片转换为.bmp扩展名类型的图片 3.将图片设置为桌面壁纸 4.打包成exe 5.修改注册表创建右键快捷方式 6.制作卸载程序,删除下载的图片, ...
- 利用Python制作简单的小程序:IP查看器
前言 说实话,查看电脑的IP,也挺无聊的,但是够简单,所以就从这里开始吧.IP地址在操作系统里就可以直接查看.但是除了IP地址,我们也想通过IP获取地理地址和网络运营商情况.IP地址和地理地址并没有固 ...
- python自动发弹幕_一个直播弹幕机器人诞生过程,Python制作自动发送弹幕小程序...
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬取B站弹幕视频讲解 https://www.bilibili.com/vide ...
- 一个直播弹幕机器人诞生过程,Python制作自动发送弹幕小程序
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬取B站弹幕视频讲解 https://www.bilibili.com/vide ...
- 使用python实现的天眼查小工具
此文章已同步更新至我的个人博客https://simonting.gitee.io 前言 帮老同学写的一个python脚本,具体需求主要是绘制一个面板,连接数据库,输入公司名称关键字,查询满足要求的数 ...
- python做出来的小程序、可以在win10上面运行_超详细,手把手教你用20行Python代码制作飞花令小程序!...
原标题:超详细,手把手教你用20行Python代码制作飞花令小程序! 来源:早起Python 作者:陈熹 飞花令是古时候人们经常玩一种"行酒令"的游戏,是中国古代酒令之一,属雅令. ...
- python做好的程序如何变成小程序-使用python编写简单的小程序编译成exe跑在win10上...
每天的工作其实很无聊,早知道应该去IT公司闯荡的.最近的工作内容是每逢一个整点,从早7点到晚11点,去查一次客流数据,整理到表格中,上交给素未蒙面的上线,由他呈交领导查阅. 人的精力毕竟是有限的,所以 ...
- 【源代码】Python制作的赛车小游戏,逆行飙车
python制作的赛车小游戏,逆行飙车,通过键盘方向键控制 程序运行截图 源代码 import pygame, sys, time, random# pygame 初始化 pygame.init() ...
最新文章
- 【TensorFlow2.0】(7) 张量排序、填充、复制、限幅、坐标选择
- 遇到的问题锦集及解决方案
- Unity-2017.2官方实例教程Roll-a-ball(一)
- onnx 测试_ONNX 现场演示教程
- 更新鸿蒙系统运行评价,全球首批!升级使用鸿蒙OS真实反馈评价出炉:差评/好评都很真实...
- LeetCode 140. 单词拆分 II(DP+回溯)
- Python中的互斥锁和join的应用
- war压缩命令_BetterZip mac版(超强解压缩软件)
- [linux]centOS 7.6 安装ntp
- 高数测试——3.29
- C++ string和wstring互转实现
- Atitit 2018 技术趋势与没落技术总结 目录 1. 2018 技术雷达	1 1.1. HOSTED IDENTITY MANAGEMENT AS A SERVICE (SaaS)身份管理
- 无聊开始玩路由器,入门Tomato固件
- PIC仿真器接口定义及连接注意事项
- DeprecationWarning: The binary mode of fromstring is deprecated, as it behaves surprisingly on unico
- 【CISSP备考笔记】第4章:通信与网络安全
- 17届智能车-电磁组比赛心得一
- Python写ROS话题
- html中,将字符串对象数组转成对象数组
- 电子商务html语言及特点,南开18秋学期(1703)《电子商务网页制作》在线作业答案...