通过 Pyqt5 实现一个界面化的下载器,在通过网络申请实现各种类型的图片的下载。能够通过界面上输出不同图片的关键字从而实现下载图片并将下载好的图片保留到自定义的文件门路中。

文末附源码、操作视频

【浏览全文】

在介绍代码块内容之前,先来看一下须要用到的三方的 python 库。

from PyQt5.QtWidgets import *from PyQt5.QtCore import *from PyQt5.QtGui import *import osfrom scripy_images import ScripyImages

其中和 Pyqt5 相干的三个模块的导入在后面的天气查问零碎的介绍中就曾经提到过了,若是须要下载《Pyqt5 天气查问零碎》的源码,请在公众号内回复:"天气查问零碎"。那么剩下的两个操作库一个是 os 模块次要是用来做系统文件相干操作的,还有一个就是 scripy_images 模块是用来通过网络申请来获取和下载图片的。

接下来介绍 Pyqt5 相干的页面定义等函数的应用。同样的先在 Pyqt5 的窗口下面增加咱们须要的须要的组件,最初通过将这些组件增加到布局外面,大略的实现过程就是遵循这个程序来实现的。

  def init_ui(self):        self.setWindowTitle('百度图片提取利用')        grid = QGridLayout()        self.page_label = QLabel()        self.page_label.setText('设置爬取页数:')        self.page_line_text = QLineEdit()        self.page_line_text.setPlaceholderText('输出整数')        self.page_line_text.setValidator(QIntValidator(1, 99))        self.page_line_text.setFocus()        self.keyword_label = QLabel()        self.keyword_label.setText('设置图关键字:')        self.keyword_line_text = QLineEdit()        self.keyword_line_text.setValidator(QRegExpValidator(QRegExp('[\u4E00-\u9FA5]+')))        self.keyword_line_text.setMaxLength(6)        self.keyword_line_text.setPlaceholderText('输出汉字')        self.file_path = QLineEdit()        self.file_path.setPlaceholderText('自定义文件门路')        self.file_path.setReadOnly(True)        self.file_path_button = QPushButton()        self.file_path_button.setText('自定义门路')        self.file_path_button.clicked.connect(self.file_path_click)        self.request_button = QPushButton()        self.request_button.setText('疾速开始抓取图片')        self.request_button.clicked.connect(self.download_image)        self.log_text = QTextEdit()        self.log_text.setPlaceholderText('抓取进度后果展现...')        self.log_text.setReadOnly(True)        self.log_text.setMaximumHeight(100)        self.version_msg_label = QLabel()        self.version_msg_label.setText('<font color=blue>公众号:[Python 集中营] 公布</font>')        self.version_msg_label.setAlignment(Qt.AlignCenter)        grid.addWidget(self.page_label, 0, 0, 1, 1)        grid.addWidget(self.page_line_text, 0, 1, 1, 2)        grid.addWidget(self.keyword_label, 1, 0, 1, 1)        grid.addWidget(self.keyword_line_text, 1, 1, 1, 2)        grid.addWidget(self.file_path, 2, 0, 1, 2)        grid.addWidget(self.file_path_button, 2, 2, 1, 1)        grid.addWidget(self.request_button, 3, 0, 1, 3)        grid.addWidget(self.log_text, 4, 0, 1, 3)        grid.addWidget(self.version_msg_label, 5, 0, 1, 3)        self.setLayout(grid)

再接着就是定义相应的槽函数,其中有两个槽函数的应用一个是切实定义文件的存储的门路时须要一个槽函数用来将获取文件门路。还有一个就是开始进行百度图片的下载过程,通过这个槽函数来调用下载模块的执行。

   def file_path_click(self):        self.cwd = os.getcwd()        directory = QFileDialog.getExistingDirectory(self, '选取文件夹', self.cwd)        print(directory)        self.file_path.setText(directory + '/')    def download_image(self):        check_param = False        self.log_text.setText("")        self.log_text.insertPlainText("-----开始必填项参数查看-----\n")        if self.page_line_text.text().strip() != '' and \                self.keyword_line_text.text().strip() != '' and \                self.file_path.text().strip() != '':            self.log_text.insertPlainText("---参数查看胜利---\n")            check_param = True        else:            self.log_text.insertPlainText("---参数查看失败---\n")            self.log_text.insertPlainText("请填写必填项后持续...\n")            check_param = False        self.log_text.insertPlainText("-----完结必填项参数查看-----\n")        if check_param is True:            self.log_text.insertPlainText("-----开始下载百度图片-----\n")            self.log_text.insertPlainText("---请急躁期待---\n")            ScripyImages(page_num=self.page_line_text.text(),current=self.keyword_line_text.text(),file_path=self.file_path.text())            self.log_text.insertPlainText("-----完结下载百度图片-----\n")

接着就是调用主函数执行整个逻辑。

     if __name__ == '__main__':    app = QApplication(sys.argv)    baidu = baiduImage()    baidu.show()    sys.exit(app.exec_())

整个 Pyqt5 的调用执行过程就是这样的,获取残缺的代码块包含百度图片执行网络申请下载的局部在公众号回复"百度图片下载器"获取残缺代码块。

操作视频演示......

【往期回顾】

python3中的zip()、zip(*)、list()之间的灵便转换!

python print() 函数的格式化字符串输入

PyQt5 GUI && Requests Api 做一个天气查问零碎(文末支付残缺代码)!

一款柔美的windows cmd命令行工具cmder

如何进行excel数据分析之后的可视化数据写入保留!

excel数据处理二:疾速实现openpyxl数据的新增、批改!

excel数据处理一:奇妙应用openpyxl提取、筛选数据

比Selenium更不便的自动化测试工具Helium!

Python数据可视化:可视化数据分析插件D-Tale

计算速度太慢?试试 lru_cache 装璜器!