python如何设计爬虫界面软件_Python+PyQt5设计B站视频数据爬虫小程序
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。
以下文章来源于菜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站视频数据爬虫小程序相关推荐
- 用python做一个数据查询软件_使用Python实现NBA球员数据查询小程序功能
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于早起Python ,作者投稿君 一.前言 有时将代码转成带有界面的程序,会极大地方便 ...
- PS、插画设计、办公软件、UI设计等教程链接
PS.插画设计.办公软件.UI设计等教程链接 1.设计工具:https://www.xueuisheji.cn/gongju/2.PS基础教程链接:https://pan.baidu.com/s/1o ...
- python进行数据查询_使用Python实现NBA球员数据查询小程序功能
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于早起Python ,作者投稿君 一.前言 有时将代码转成带有界面的程序,会极大地方便 ...
- pyqt5 pyqt5+opencv 实现读取视频数据
pyqt5 pyqt5+opencv 实现读取视频数据 1.openCV读取视频数据 2.openCV集成pyqt5读取视频数据 界面美化版: 1.openCV读取视频数据 import cv2if ...
- 《移动软件开发》实验一:第一个微信小程序
2022年夏季<移动软件开发>实验一:第一个微信小程序 一.实验目标 1.学习使用快速启动模板创建小程序的方法:2.学习不使用模板手动创建小程序的方法. 二.实验步骤 1.自动生成小程序 ...
- 微信小程序:简洁界面清爽让人非常舒服的一款短视频去水印微信小程序
总得来说这是一款以各大平台短视频去水印为主的一款小程序源码 内含支持多平台的接口 支持短视频和图集去水印 小编个人觉得界面让人看起来特别的清爽特别的舒服 没有那么多的花里胡哨的,另外小编也给它添加了多 ...
- 基于Python编写一个B站全自动抽奖的小程序
本文将利用Python编写一个B站全自动抽奖的小程序,可以实时监控自己关注的UP主,如果关注的UP主中有人发布了抽奖的动态,就自动参与这个抽奖.这样就能不错过任何一个可以暴富的机会了.需要的可以参考一 ...
- python如何设计系统界面教程_python中pycharm软件界面介绍与配置
知识回顾: 上节内容我们学习了下载和安装pycharm,从本节开始,我们很多情况下都会使用pycharm这个集成开发工具来开发一些小程序. 本节知识视频教程 文字教程讲解开始: 一.界面初始化 我们在 ...
- python执行结果在gui界面显示_Python PyQt5运行程序把输出信息展示到GUI图形界面上...
概述:最近在赶毕业设计,遇到一个问题,爬虫模块我用PyQt5写了图形界面,为了将所有的输出信息都显示到图形界面上遇到了问题. 先演示一下效果最终效果吧,下面两张图用来镇楼.可以看到我们图形界面和程序运 ...
最新文章
- 分布式系统理论基础,以及选举,多数派,租约
- 图.exe 已触发了一个断点。 出现了_学术简报︱基于保护综合重要度的最小断点集优选方法...
- kotlin内联函数let、with、run、apply、also
- 监听edittext中文字个数变化··
- CF626E. Simple Skewness
- linux 软件部署工具下载,linux配置 yum管理应用软件 、 快速部署Web/FTP
- php模板怎么导入数据类型,smarty模板引擎之分配数据类型,smarty模板数据类型_PHP教程...
- 帖子内容 mysql_mysql-SQL:选择最新主题和最新帖子,按论坛...
- python写小说阅读器_用python实现自己的小说阅读器
- css中1cm等于多少px,px和rem换算(1rem等于多少px)
- Android APP打开另一个APP完整逻辑实现
- 什么是物联网?物联网与互联网的区别是什么
- Java实现生成并下载Excel文件
- python读取lst文件
- 卡卡又一次双手举天,巴西涉险过关,克罗地亚虽败尤荣.
- Windows变量路径与通配符
- MCAL中DIO的配置
- 安装widows XP时蓝屏代码0X0000007B的问题的解决方案
- Linux开机自启动挂盘以及进入紧急模式的解决办法
- 室内设计——办公楼创意室内设计(包含预览图jpg和.psd文件)