本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

以下文章来源于菜J学Python ,作者J哥

前言

目前,市场上有大量 Python图形用户界面(GUI)开发框架可供选择,如wxpython 、pyqt5、Gtk、Tk等。本文将用Python结合PyQt5制作一款B站视频数据爬虫小程序,可以通过输入关键字、页码以及选择存储路径后,下载相应的数据,效果如下:

以下将详细介绍这个GUI工具的制作方法,如需本文完整代码,后台回复GUI。

开发环境

Python3

Pycharm

PyQt5

Qt Designer

requests

准备工作

首先,新建一个bilibili.py文件。获取B站视频数据的爬虫代码相对简单,只要在设置好url的keyword和page参数,即可轻松获取数据。以下贴出完整代码:

importrequestsfrom lxml importetreeimporttimeimportrandomimportcsvdefget_target(keyword,page):for i in range(1,page + 1):

headers= {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'}

url= 'https://search.bilibili.com/all?keyword={0}&from_source=nav_suggest_new0&page={1}'.format(keyword,page)

html= requests.get(url.format(i),headers =headers)

bs=etree.HTML(html.text)

items= bs.xpath('//li[@class = "video-item matrix"]')for item initems:

title= item.xpath('div[@class = "info"]/div/a/@title')[0]

click= item.xpath('div[@class = "info"]/div[3]/span[1]/text()')[0].strip('\n').replace("万","")

danmu= item.xpath('div[@class = "info"]/div[3]/span[2]/text()')[0].strip('\n')

date= item.xpath('div[@class = "info"]/div[3]/span[3]/text()')[0].strip('\n')

up= item.xpath('div[@class = "info"]/div[3]/span[4]/a/text()')[0].strip('\n')

data= {'标题': title, '播放量(万)': click, '弹幕': danmu, '日期': date, 'UP主': up}

with open('B站数据.csv', 'a+', encoding='utf_8_sig', newline='') as fp:

fieldnames= ['标题', '播放量(万)', '弹幕', '日期', 'UP主']

writer= csv.DictWriter(fp, fieldnames=fieldnames)

writer.writerow(data)

time.sleep(random.random()+ 1)print('已经完成b站第 {} 页爬取'.format(i))if __name__ == "__main__":

keyword= input("请输入要搜索的关键词:")

page= int(input("请输入要爬取的页数:"))

get_target(keyword,page)

比如keyword输入"打工人",page输入5,运行爬虫代码,即可生成打工人相关的B站视频数据csv文件,数据预览如下:

UI设计

这里用到一款好用的工具——Qt Designer,通过它"用鼠标拖拖"就能完成窗体设计。

安装Qt Designer

pip3 install PyQt5

pip3 install PyQt5-tools

配置开发工具

安装完Qt Designer后,我们利用PyCharm进行界面开发,下面进行Qt开发工具的配置:Files —> Settings —> Tools —> External Tools —> 点击"+",

添加QT Desinger

Name: QT Designer

Program: designer.exe所在的路径#注意:该路径为你Python安装路径下Lib\site-packages\pyqt5_tools文件夹里

Working directory: $FileDir$

添加Py UIC

Name: Py UIC

Program: pyuic5.exe所在路径#该路径为你Python安装路径下Scripts文件夹里

Arguments: $FileName$ -o $FileNameWithoutExtension$.py

Working directory: $FileDir$

注:mac环境下需要单独安装Qt,去官网下载开源版本即可。

Qt Designer设计界面

在PyCharm中创建一个项目,然后点击“Tools”--“External Tools”--“QT Desinger”打开QT Desinger,如下图:

界面介绍

工具箱区域:提供GUI界面开发使用的各种基本控件,如单选框、文本框等。可以拖动到新 创建的主程序界面。主界面区域:用户放置各种从工具箱拖过来的各种控件。模板选项中最常用的就是 Widget(通用窗口)。对象查看器区域:查看主窗口放置的对象列表。属性编辑器区域: 提供对窗口、控件、布局的属性编辑功能。比如修改控件的显示文本、对 象名、大小等。信号/槽编辑器区域:编辑控件的信号和槽函数,也可以添加自定义的信号和槽函数。

界面操作

本文以创建Widget窗口为例,通过简单的拖拽,字体和颜色的配置,即可轻松完成如下界面的设计:

将ui文件转为py代码

界面设计好以后,保存为run.ui文件,选中“run.ui”,在其上点击鼠标右键,到“External Tools”中点击“PyUIC”,即可生成run.py文件:

爬虫代码与界面相结合

完善run.py,赋给“开始下载”按钮以‘pushButton_click’函数,赋给“保存路径”按钮以‘setBrowerPath’函数:

#链接爬虫函数

self.pushButton.clicked.connect(Form.pushButton_click)

self.pushButton_2.clicked.connect(Form.setBrowerPath)

完善爬虫代码,将界面整体框架融入其中:

importsysfrom run import Ui_Form #继承run.py

from PyQt5.QtWidgets import *

from PyQt5 importQtCore, QtGui, QtWidgetsclassMyPyQT_Form(QWidget, Ui_Form):def __init__(self):

super(MyPyQT_Form, self).__init__()

self.setupUi(self)defpushButton_click(self):

······defsetBrowerPath(self):

······if __name__ == '__main__':

app=QApplication(sys.argv)

my_pyqt_form=MyPyQT_Form()

my_pyqt_form.show()

sys.exit(app.exec_())

然后在pushButton_click函数中添加代码, 接收界面输入的keyword和page参数,导入接口url中,代码如下:

defpushButton_click(self):

self.textEdit_4.setText("下载中......")

self.keyword= self.lineEdit.text() #关键字

self.page = int(self.lineEdit_2.text()) #页数

#result = pd.DataFrame()

for i in range(1,self.page + 1):

time.sleep(random.random()+ 0.5)

headers= {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'}

url= 'https://search.bilibili.com/all?keyword={0}&from_source=nav_suggest_new0&page={1}'.format(self.keyword,self.page)

html= requests.get(url.format(i),headers =headers)

bs=etree.HTML(html.text)

items= bs.xpath('//li[@class = "video-item matrix"]')for item initems:

title= item.xpath('div[@class = "info"]/div/a/@title')[0]

click= item.xpath('div[@class = "info"]/div[3]/span[1]/text()')[0].strip('\n').replace("万","")

danmu= item.xpath('div[@class = "info"]/div[3]/span[2]/text()')[0].strip('\n')

date= item.xpath('div[@class = "info"]/div[3]/span[3]/text()')[0].strip('\n')

up= item.xpath('div[@class = "info"]/div[3]/span[4]/a/text()')[0].strip('\n')

data= {'标题': title, '播放量(万)': click, '弹幕': danmu, '日期': date, 'UP主': up}

with open('{0}/{1}视频数据.csv'.format(self.download_path,self.keyword),'a+', encoding='utf_8_sig', newline='') as fp:

fieldnames= ['标题', '播放量(万)', '弹幕', '日期', 'UP主']

writer= csv.DictWriter(fp, fieldnames=fieldnames)

writer.writerow(data)

self.textEdit_4.append("第{0}页下载完成".format(i))

self.textEdit_4.append("保存路径:{}".format(self.download_path))

self.textEdit_4.append("文件名称:{}".format('{0}共{1}个视频数据.csv'.format(self.keyword,self.page*20)))

充实setBrowerPath函数,获取数据存储路径,将路径在输出框显示出来:

defsetBrowerPath(self):

self.download_path=QFileDialog.getExistingDirectory(self)

self.textEdit_3.setText(self.download_path)

工具打包

在cmd控制台使用cd进入py文件所在目录:

cd D:\GUI工具\B站视频数据下载器

使用pyinstaller打包:

pyinstaller -F -w bilibili.py

运行完成后,会在当前目录下生成1个dist文件夹和build文件夹,打开dist文件夹,双击bilibili.exe,工具即可运行。mac环境下可以使用py2app进行打包。

python如何设计爬虫界面软件_Python+PyQt5设计B站视频数据爬虫小程序相关推荐

  1. 用python做一个数据查询软件_使用Python实现NBA球员数据查询小程序功能

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于早起Python ,作者投稿君 一.前言 有时将代码转成带有界面的程序,会极大地方便 ...

  2. PS、插画设计、办公软件、UI设计等教程链接

    PS.插画设计.办公软件.UI设计等教程链接 1.设计工具:https://www.xueuisheji.cn/gongju/2.PS基础教程链接:https://pan.baidu.com/s/1o ...

  3. python进行数据查询_使用Python实现NBA球员数据查询小程序功能

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于早起Python ,作者投稿君 一.前言 有时将代码转成带有界面的程序,会极大地方便 ...

  4. pyqt5 pyqt5+opencv 实现读取视频数据

    pyqt5 pyqt5+opencv 实现读取视频数据 1.openCV读取视频数据 2.openCV集成pyqt5读取视频数据 界面美化版: 1.openCV读取视频数据 import cv2if ...

  5. 《移动软件开发》实验一:第一个微信小程序

    2022年夏季<移动软件开发>实验一:第一个微信小程序 一.实验目标 1.学习使用快速启动模板创建小程序的方法:2.学习不使用模板手动创建小程序的方法. 二.实验步骤 1.自动生成小程序 ...

  6. 微信小程序:简洁界面清爽让人非常舒服的一款短视频去水印微信小程序

    总得来说这是一款以各大平台短视频去水印为主的一款小程序源码 内含支持多平台的接口 支持短视频和图集去水印 小编个人觉得界面让人看起来特别的清爽特别的舒服 没有那么多的花里胡哨的,另外小编也给它添加了多 ...

  7. 基于Python编写一个B站全自动抽奖的小程序

    本文将利用Python编写一个B站全自动抽奖的小程序,可以实时监控自己关注的UP主,如果关注的UP主中有人发布了抽奖的动态,就自动参与这个抽奖.这样就能不错过任何一个可以暴富的机会了.需要的可以参考一 ...

  8. python如何设计系统界面教程_python中pycharm软件界面介绍与配置

    知识回顾: 上节内容我们学习了下载和安装pycharm,从本节开始,我们很多情况下都会使用pycharm这个集成开发工具来开发一些小程序. 本节知识视频教程 文字教程讲解开始: 一.界面初始化 我们在 ...

  9. python执行结果在gui界面显示_Python PyQt5运行程序把输出信息展示到GUI图形界面上...

    概述:最近在赶毕业设计,遇到一个问题,爬虫模块我用PyQt5写了图形界面,为了将所有的输出信息都显示到图形界面上遇到了问题. 先演示一下效果最终效果吧,下面两张图用来镇楼.可以看到我们图形界面和程序运 ...

最新文章

  1. 分布式系统理论基础,以及选举,多数派,租约
  2. 图.exe 已触发了一个断点。 出现了_学术简报︱基于保护综合重要度的最小断点集优选方法...
  3. kotlin内联函数let、with、run、apply、also
  4. 监听edittext中文字个数变化··
  5. CF626E. Simple Skewness
  6. linux 软件部署工具下载,linux配置 yum管理应用软件 、 快速部署Web/FTP
  7. php模板怎么导入数据类型,smarty模板引擎之分配数据类型,smarty模板数据类型_PHP教程...
  8. 帖子内容 mysql_mysql-SQL:选择最新主题和最新帖子,按论坛...
  9. python写小说阅读器_用python实现自己的小说阅读器
  10. css中1cm等于多少px,px和rem换算(1rem等于多少px)
  11. Android APP打开另一个APP完整逻辑实现
  12. 什么是物联网?物联网与互联网的区别是什么
  13. Java实现生成并下载Excel文件
  14. python读取lst文件
  15. 卡卡又一次双手举天,巴西涉险过关,克罗地亚虽败尤荣.
  16. Windows变量路径与通配符
  17. MCAL中DIO的配置
  18. 安装widows XP时蓝屏代码0X0000007B的问题的解决方案
  19. Linux开机自启动挂盘以及进入紧急模式的解决办法
  20. 室内设计——办公楼创意室内设计(包含预览图jpg和.psd文件)

热门文章

  1. 题解【洛谷】P1706 全排列问题
  2. java通过与4g模块DTU通信控制串口设备PLC解决方案
  3. Linux 环境下针对进程维度的监控实现
  4. 20个 Chat GPT相关的网站
  5. 黑名单白名单_白名单/黑名单
  6. ssm+java+vue基于微信小程序的电影院票务系统(可选座评论等功能)#毕业设计
  7. mqtt(4):mqtt-benchmark 对mqtt 服务进行压力测试
  8. 【1343】平方和与立方和
  9. deeplink链接怎么生成?
  10. 计算机视觉三大基本任务:分类、检测(定位)、分割(语义和实例)