当前位置: 首页 > 后端技术 > Python

Python表情包下载器,轻松下载上万个表情包,拼图无忧

时间:2023-03-26 14:13:59 Python

[阅读全文]每次和朋友聊天都苦于没有表情包,别人的表情包好像取之不尽用之不竭取之不尽,用之不竭。作为一个程序员,怎么可能甘心认输,所以做了一个表情包下载器给大家拼。首先介绍一下设计思路。像我们之前做的百度图片下载器2.0,我们使用pyqt5作为UI界面制作的框架,然后需要找一个表情包网站给我们下载很多表情包。表情包使用的网站如下,也可以使用自己找到的表情包网站下载。https://www.fabiaoqing.com/biaoqing/话不多说,先说明一下用到的python库有哪些。UI界面用到的pyqt5模块如下,之前UI界面开发都用过这些库。fromPyQt5.QtWidgetsimport*fromPyQt5.QtCoreimport*fromPyQt5.QtGuiimport*importsysimportos以下是下载(或爬虫)表情时使用的python应用库。importrequestsimportrefromurllib.requestimporturlretrievesfromfake_useragentimportUserAgent准备好用到的标准库或非标准库,先写UI界面,然后开始我们的表演。classEmoji(QWidget):def__init__(self):super(Emoji,self).__init__()self.init_ui()definit_ui(self):'''初始化UI界面布局:return:'''self.setWindowTitle('Emoji下载器公众号:[Python集中营]')self.setWindowIcon(QIcon('Emojiicon.png'))self.setFixedSize(500,300)grid=QGridLayout()self.page_size=QLabel()self.page_size.setText('默认每页数:')self.page_size_text=QLineEdit()self.page_size_text.setText('45')self.page_size_text.setReadOnly(True)self.page_num=QLabel()self.page_num.setText('设置下载页数:')self.page_num_text=QLineEdit()self.page_num_text.setPlaceholderText('请输入1~200的整数')self.page_num_text.setValidator(QIntValidator(1,200))self.save_dir=QLineEdit()self.save_dir.setReadOnly(True)self.save_dir.setPlaceholderText('图片存放路径')self.save_dir_btn=QPushButton()self.save_dir_btn.setText('设置存储路径')self.save_dir_btn.clicked.connect(self.save_dir_btn_click)self.brower=QTextBrowser()self.brower.setPlaceholderText('下载进度结果显示区...')self.start_btn=QPushButton()self.start_btn.setText('开始下载表情')self.start_btn.clicked.connect(self.start_btn_click)grid.addWidget(self.page_size,0,0,1,1)grid.addWidget(self.page_size_text,0,1,1,1)grid.addWidget(self.page_num,1,0,1,1)grid.addWidget(self.page_num_text,1,1,1,1)grid.addWidget(self.save_dir,2,0,1,1)grid.addWidget(self.save_dir_btn,2,1,1,1)grid.addWidget(self.brower,3,0,1,2)grid.addWidget(self.start_btn,4,0,1,2)self.thread_=DownloadThread(self)self.thread_.finished.connect(self.finished)self.thread_.log.connect(self.set_log)self.setLayout(grid)defsave_dir_btn_click(self):'''设置存储文件路径:return:'''dir=QFileDialog.getExistingDirectory(self,"SelectFolder",os.getcwd())self.save_dir.setText(dir)defstart_btn_click(self):'''启动子线程下载表情包:return:'''self.start_btn.setEnabled(False)self.thread_.start()self.set_log('下载线程已经开始...')defset_log(self,text):'''在浏览器中更新文本日志信息:paramtext::return:'''cursor=self.brower.textCursor()cursor.movePosition(QTextCursor.End)self.brower.append(text)self.brower.setTextCursor(cursor)self.brower.ensureCursorVisible()deffinished(self,finished):iffinishedisTrue:self.start_btn.setEnabled(True)写完UI界面,开始写下载表情的子线程。子线程的写法需要继承pyqt5中的QThread线程来写classDownloadThread(QThread):finished=pyqtSignal(bool)log=pyqtSignal(str)def__init__(self,parent=None):super(DownloadThread,self).__init__(parent)self.parent=parentself.working=True定义__del__(self):self.working=Falseself.wait()defrun(self):self.download()defdownload(self):user_agent=UserAgent()page_num=int(self.parent.page_num_text.text())save_dir=self.parent.save_dir.text()forninrange(1,page_num):url='https://www.fabiaoqing.com/biaoqing/lists/page/{}.html'.format(n)headers={'user-agent':user_agent.random}response=requests.get(url,headers=headers)repx=re.compile('data-original="(.*?)"title="(.*?)"',re.I)texts=repx.findall(response.text)fortextsintexts:emoji_url=text[0].split('"src="')[0]emoji_name=emoji_url.split('/')[-1]urlretrieve(emoji_url,save_dir+'/'+emoji_name)self.log.emit(emoji_name+'下载完成!')self.log.emit('子线程下载完成!')self.finished.emit(True)最后使用main函数将页面布局添加到应用程序的主循环中,启动整个应用程序,你就完成了if__name__=='__main__':app=QApplication(sys.argv)main=Emoji()main.show()sys.exit(app.exec_())复制以上所有内容代码块到开发工具(我用的是Pycharm),直接启动。欢迎评论区指点~【之前精彩】Python自动清理电脑垃圾文件,一键启动...有了jmespath,在python中处理json数据成为一种享受...解锁一个新技能,如何在Python代码中使用表情包……万能的List列表,python中的栈和队列都靠它了!如何使用pyqt5实现数据增删改查功能...介绍一款文字转语音神器,几行代码搞定!初学者用python自动批量整理文件的福利:分享五个免费的Python学习网站,赶紧收藏吧!有趣的控制台玩法:一行代码绘制控制台图像!数据处理小工具:Excel批量数据文件拆分器/集成器...办公自动化:PDF文件合并,合并多个PDF文件...GUI猜数游戏,直接玩...