前段时间写了一个百度图片下载器,发现很多人需要用到。说实话,我之前写的百度图片下载器比较low,今天有空升级了一下。完整源码的获取方式在文末,需要的可以直接下载。更新了两个错误。一是当下载的图片达到几千张的时候,就没有图片下载了。另一个是无法实时显示下载进度,不知道下载到什么程度。同样,我们先导入需要的第三方库。'''UI界面相关库'''fromPyQt5.QtWidgetsimport*fromPyQt5.QtCoreimport*fromPyQt5.QtGuiimport*'''应用程序操作相关库'''importsysimportosfromscripy_imagesimportScripyImagesUIinterfaceintheoriginal上基础上增加了文本浏览器实时查看下载进度,并增加了每页下载图片数量的控制,使下载数据更加准确。definit_ui(self):self.setWindowTitle('百度图片下载器2.0公众号:[Python集中营]')self.setWindowIcon(QIcon('Download.ico'))self.setFixedSize(550,300)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.page_num_label=QLabel()self.page_num_label.setText('每页抓取次数:')self.page_num_text=QSpinBox()self.page_num_text.setRange(50,100)self.page_num_text.setSingleStep(10)self.page_num_text.setWrapping(True)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.brower=QTextBrowser()self.brower.setPlaceholderText('抓取进度结果显示...')grid.addWidget(self.page_label,0,0,1,1)grid.addWidget(self.page_line_text,0,1,1,2)网格。addWidget(self.page_num_label,1,0,1,1)网格。addWidget(self.page_num_text,1,1,1,2)网格。addWidget(self.keyword_label,2,0,1,1)grid.addWidget(self.keyword_line_text,2,1,1,2)grid.addWidget(self.file_path,3,0,1,2)grid.addWidget(self.file_path_button,3,2,1,1)grid.addWidget(self.brower,4,0,1,3)grid.addWidget(self.request_button,5,0,1,3)self.thread_=ScripyImages(self)self.thread_.trigger.connect(self.update_log)self.thread_.finished.connect(self.finished)self.setLayout(grid)添加文本控件向浏览器实时写入数据的槽函数defupdate_log(self,text):'''槽函数:向文本浏览器写入内容:paramtext:::return:'''cursor=self.brower.textCursor()cursor.movePosition(QTextCursor.End)self.brower.append(text)self.brower.setTextCursor(cursor)self.brower.ensureCursorVisible()优化图片下载流程,使用专门的子线程处理图片部分下载。defdownload_image(self):self.request_button.setEnabled(False)self.thread_.start()图片下载的线程处理逻辑可以在完整源码部分下载,代码块这里就不展示了。公众号回复“百度图片下载器2.0”获取完整源码。我是【Python集中营】,很高兴看到最后,我是专注于Python知识分享的公众号,希望得到大家的关注~【上一篇精彩】gif动态图片生成器,后组合多张图片生成动画...python中几种常见的数据处理操作,一行代码即可完成!过年了,我们用PyQt5生成一对春联...记录下python中前十%占位符对应的格式...PyQt5UI做豆瓣电影信息查看器,认识QThread多线程首次...
