基于Python制作天眼查小程序的示例代码

目录
  • 界面搭建
    • 整体布局
    • 界面美化
  • 天眼查爬虫
    • 获取信息
    • 代码编写
  • 结果展示

今天我们一起来制作一个天眼查GUI程序,开宗明义,我们先来看下最终的效果

这次的GUI程序,我们使用的框架是PyQt5,该框架拥有比tkinter更为丰富的内置组件,在界面美化方面,貌似也更胜一筹!

从上图也可以看出,我们的目标还是蛮远大的,最终我们希望可以完成一个工具集合,把我们日常当中常用的功能都集成的该GUI程序中,比如天眼查公司信息,知乎用户知识图谱,B视频弹幕抓取等等。

好了,今天我们先完成天眼查的功能吧~

界面搭建

大家也都看到了,本GUI程序的整体界面还是不丑的(原谅我只敢用不丑两个字),虽然可能目前仅仅是看起来不丑,但是背后的美化工作还是非常繁琐的。

这里萝卜哥也是借鉴了网上大神的基础代码,州的先生在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进行测试如下

我们只需要在请求上面的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)

至此,我们这个天眼查工具就完成了~

结果展示

下面我们来看看最终的效果吧

到此这篇关于基于Python制作天眼查小程序的示例代码的文章就介绍到这了,更多相关Python天眼查内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python自动化爬取天眼查数据的实现

    首先要注册一个账号密码,通过账号密码登录,并且滑块验证,自动输入搜索关键词,进行跳转翻页爬取数据,并保存到Excel文件中. 代码运行时,滑块验证经常不通过,被吃掉,但是发现打包成exe运行没有这个问题,100%成功登录.如果大家知道这个问题麻烦请与我分享,谢谢! 废话不多说直接上代码 # coding=utf-8 from selenium import webdriver import time from PIL import Image, ImageGrab from io import

  • 基于Python制作天眼查小程序的示例代码

    目录 界面搭建 整体布局 界面美化 天眼查爬虫 获取信息 代码编写 结果展示 今天我们一起来制作一个天眼查GUI程序,开宗明义,我们先来看下最终的效果 这次的GUI程序,我们使用的框架是PyQt5,该框架拥有比tkinter更为丰富的内置组件,在界面美化方面,貌似也更胜一筹! 从上图也可以看出,我们的目标还是蛮远大的,最终我们希望可以完成一个工具集合,把我们日常当中常用的功能都集成的该GUI程序中,比如天眼查公司信息,知乎用户知识图谱,B视频弹幕抓取等等. 好了,今天我们先完成天眼查的功能吧~

  • 基于Python制作三款起床闹钟的示例代码

    目录 导语 一.Turtle绘制时钟 1)代码展示 2)效果展示 二.Turtle实现模拟时钟 1)代码展示 2)效果展示 三.简易时钟 1)代码展示 2)效果展示 导语 叮叮叮,我们要按时长大 我是你们的木子同学!当当当当——隆重出场,撒花撒花~ 嗨!大家有没有生物钟不准时的时候,是不是每到休息日或者长假就会经常要倒时差? 每天上班最痛苦的事情就是早起早起早起!这是大部分上班族的痛苦,但是不上班又是不可能的啦,因为都是为了搞钱 今天小编就用代码示例化,给大家展示一下不同的时钟,希望大家按时上班

  • 基于Python实现人像雪景小程序

    目录 导语 ​正文 1)素材环境(仅部分) 2)运行环境 3)代码演示 4)效果展示 导语 哈喽~大家早上好鸭! 冷空气来袭,不少地方一夜入冬,南方地区除了冷就是雨,而北方除了冷还有雪. 就说下雪这件事吧,其实南北都特别期待.诗意的白色世界.戏剧般的氛围,容易让人情不自禁地 沉溺其中. 继上一期的[故宫,下雪了]一夜醒来,故宫完成秋冬交接,来自北方的故事纷纷踏雪而来后,小伙伴们都墙裂要求雪景少不了,还需要人物自拍美美的照片! 所以今天我们就来啦,码住这份攻略,雪景最美~​ ​(其实吧:我们这边城

  • 基于Python实现自动抠图小程序

    目录 导语 正文 1.前期准备 1.1 首先 1.2 网站小介绍 2.正式抠图 2.1 环境安装 2.2 素材(可自选) 2.3 主程序代码 3.效果图 3.1 界面展示 ​3.2 图片展示 总结 导语 大家好!我是木木子,今天天气不是很好,下雨了,让我没点儿写文章的动力啊~ 写程序:一天到晚没事做,一行代码改一天,从白天学完天黑! 在日常的工作和生活中,我们经常会遇到需要抠图的场景,即便是只有一张图片需要抠,也会抠得我们不耐烦,倘若遇到许多张图片需要抠,那就…… 今天教你用Python制作一款

  • 使用Python制作简单的小程序IP查看器功能

    前言 说实话,查看电脑的IP,也挺无聊的,但是够简单,所以就从这里开始吧.IP地址在操作系统里就可以直接查看.但是除了IP地址,我们也想通过IP获取地理地址和网络运营商情况.IP地址和地理地址并没有固定的关系,所以我们需要借助网络上的数据库,或者说借助第三方的服务来查询.这里,我们选用IP.CN提供的IP地址查询服务. 基本环境配置 版本:Python3 系统:Windows 相关模块:PyQt5 实现效果图 完整代码 运行以上程序,点击按钮,大约卡顿半秒后,文本标签处就会显示我们电脑的IP地址

  • 基于python tkinter的点名小程序功能的实例代码

    代码如下所示: import datetime import json import os import random import tkinter as tk import openpyxl # 花名册文件名 excel_file_path = "花名册.xlsx"#需在当前目录创建对应花名册.xlsx # 工作表名 excel_sheet = "Sheet1" # 记录存储文件名 file_path = "name_record.json"

  • 基于Python制作短信发送程序

    目录 一.Python短信发送界面最后的效果 二.准备:注册腾讯云账号并配置短信功能 三.初始化短信发送程序窗口 3.1初始化窗口菜单 3.2初始化窗口控件 3.3编写事件触发程序 四.完整源代码 一.Python短信发送界面最后的效果 二.准备:注册腾讯云账号并配置短信功能 (1)注册腾讯云账号 登录腾讯云网址 (2)获取AppID.AppKey 在短信功能页面下,从应用管理>应用列表,获取ID.Key. (3)创建签名 在短信功能页面下,进入国内短信>签名管理,创建签名. (4)创建正文模

  • 基于Python实现千图成像工具的示例代码

    目录 前置 GUI制作 GUI界面设计 逻辑设计 图片处理 修改底图大小 修改组图大小 计算图片填充次数 组图合成 图片合成 GUI打包 千图成像也就是用N张图片组成一张图片的效果.制作方法有很多的,最常见的如用ps.懒人图云.foto-mosaik-edda这些制作. 千图成像的效果我大致分为两类:一为直接用N张图片根据底图的像素颜色.大小,一张张的组成底图,如foto-mosaik-edda:二为用N张图片根据底图的像素大小,组成一张与底图大小相仿的图片,再把二者合成,经调整透明度而成的图片

  • 基于Unity3D实现3D迷宫小游戏的示例代码

    目录 一.前言 二.构思 三.正式开发 3-1.搭建场景 3-2.设置出入口 3-3.添加角色 3-4.实现角色移动 3-5.出入口逻辑 四.总结 一.前言 闲来无事,从零开始整个<3D迷宫>小游戏. 本篇文章会详细介绍构思.实现思路,希望可以帮助到有缘人. 二.构思 首先,要实现一个小游戏,心里肯定要有一个大概的想法,然后就是将想法完善起来. 我的想法就是一个用立体的墙搭建的迷宫,然后控制人物在迷宫中移动,最后找到出口,就这么简单. 当然,这是一个雏形,比如可以加点音效.背景.关卡.解密等.

  • 基于Python实现音乐播放器的实现示例代码

    目录 一.环境设置 二.播放功能 三.停止功能 四.暂停与恢复 五.关闭 六.完整代码 七.改进 一.环境设置 第一步引入必须的各类包 import os import tkinter import tkinter.filedialog import random import time import threading import pygame 特别是pygame需要手动安装 pip install pygame 二.播放功能 首先选择音乐目录,然后创建播放现成,播放音乐. # 播放按钮 d

随机推荐