聊天尬死名场面,你遇到过吗?教你一键获取斗图表情包,晋升聊天达人
大家好呀,我是辣条。
写这篇文章的灵感来源于之前和朋友的聊天,真的无力吐槽了,想发适合的表情包怼回去却发现收藏的表情包就那几个,就想着是不是可以爬取一些表情包,再也不用尬聊了。
先给大家看看我遇到的聊天最尬的场面:
斗图吧图片采集
- 抓取目标
- 工具使用
- 重点内容学习
- 项目思路分析
- 整理需求
- 简易源码分享
抓取目标
网站:斗图吧
工具使用
开发环境:win10、python3.7
开发工具:pycharm、Chrome
工具包:requests、etree
重点内容学习
1.Q队列储存数据信息
2.py多线程使用方法
3.xpath语法学习
项目思路分析
根据你需要的关键字搜索对应的图片数据
搜索的关键字和页数根据改变对应的url
https://www.doutula.com/searchtype=photo&more=1&keyword={}&page={}
将对应的url地址保存在page队列里
page_q = Queue()img_q = Queue()for x in range(1, 11):url = 'https://www.doutula.com/search?type=photo&more=1&keyword=%E7%A8%8B%E5%BA%8F%E5%91%98&page={}'.format(x)page_q.put(url)
通过xpath方式提取当前页面的url地址以及图片的名字
将提取到的图片和地址存储在img队列里
def parse_page(self, url):response = requests.get(url, headers=self.headers).text# print(response)html = etree.HTML(response)images = html.xpath('//div[@class="random_picture"]')for img in images:img_url = img.xpath('.//img/@data-original')# 获取图片名字print(img_url)alt = img.xpath('.//p/text()')for name, new_url in zip(alt, img_url):filename = re.sub(r'[??.,。!!*\/|]', '', name) + ".jpg"# 获取图片的后缀名# suffix = os.path.splitext(img_url)[1]# print(alt)self.img_queue.put((new_url, filename))
根据图片地址下载保存图片
保存图片是要根据图片url来判断保存的后缀(我统一保存的jpg,问就是因为懒癌晚期)
整理需求
- 创建两个线程类,一个用来提取网页图片数据,一个保存图片数据
- 创建两个队列,一个保存page的url, 一个保存图片的url和名字
- 通过xpath的方法提取出网址的图片地址
简易源码分享
import requests
from lxml import etree
import re
from queue import Queue
import threadingclass ImageParse(threading.Thread):def __init__(self, page_queue, img_queue):super(ImageParse, self).__init__() self.page_queue = page_queueself.img_queue = img_queueself.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'}def run(self):if self.page_queue.empty():breakurl = self.page_queue.get()self.parse_page(url)def parse_page(self, url):response = requests.get(url, headers=self.headers).text# print(response)html = etree.HTML(response)images = html.xpath('//div[@class="random_picture"]')for img in images:img_url = img.xpath('.//img/@data-original')# 获取图片名字print(img_url)alt = img.xpath('.//p/text()')for name, new_url in zip(alt, img_url):filename = re.sub(r'[??.,。!!*\/|]', '', name) + ".jpg"# 获取图片的后缀名# suffix = os.path.splitext(img_url)[1]# print(alt)self.img_queue.put((new_url, filename))class Download(threading.Thread):def __init__(self, page_queue, img_queue):super(Download, self).__init__()self.page_queue = page_queueself.img_queue = img_queuedef run(self):if self.img_queue.empty() and self.page_queue.empty():breakimg_url, filename = self.img_queue.get()with open("表情包/" + filename, "wb")as f:response = requests.get(img_url).contentf.write(response)print(filename + '下载完成')def main():# 建立队列page_q = Queue()img_q = Queue()for x in range(1, 11):url = 'https://www.doutula.com/search?type=photo&more=1&keyword=%E7%A8%8B%E5%BA%8F%E5%91%98&page={}'.format(x)page_q.put(url)for x in range(5):t = ImageParse(page_q, img_q)t.start()t = Download(page_q, img_q)t.start()if __name__ == '__main__':main()
PS:表情包在手,聊天永不尬,没什么事是一个表情包解决不了的,如果有那就多发几个!对你有用的话给辣条一个三连吧,感谢啦!
先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦
聊天尬死名场面,你遇到过吗?教你一键获取斗图表情包,晋升聊天达人相关推荐
- 聊天尬住了?教你用Python一键获取斗图表情包,从此摇身变海王
很多兄弟在聊天上没有下太多的功夫,导致自己聊天的时候很容易尬住,然后就不知道聊啥了,这时候合适表情包分分钟就能救场,但是一看自己收藏的表情包,好家伙,两只手都数得过来. 所以今天来给兄弟们分享一下爬取 ...
- 聊天突然尬住?教你用Python一键获取斗图表情包,各种表情包轻松化解尴尬
很多兄弟在聊天上没有下太多的功夫,导致自己聊天的时候很容易尬住,然后就不知道聊啥了,这时候合适表情包分分钟就能救场,但是一看自己收藏的表情包,好家伙,两只手都数得过来. 所以今天来给兄弟们分享一下爬取 ...
- QQ集体被盗号,猝不及防的大型社死名场面
中国互联网行业许久没发生什么轰动全网的大新闻了. 但是,不论是历史还是现实都告诉我们: 平静的大海看似毫无波澜,是因为它在酝酿更大的风暴. 6月26号晚上,网民们一如既往地在线欢乐冲浪.划水.打游戏. ...
- Qt Quick实现局域网聊天V4版本(支持GIF动图表情包、消息聊天、拖动缩放窗口、支持Linux编译)
Qt Quick实现局域网聊天V4版本(支持GIF动图表情包.消息聊天.拖动缩放窗口.支持Linux编译) 随着社交网络的普及,人们的聊天方式也变得更加高效和便捷.在这里,我们将利用Qt Quick构 ...
- 40.qt quick- 高仿微信实现局域网聊天V4版本(支持gif动图表情包、消息聊天、拖动缩放窗口、支持Linux编译)...
在上章https://blog.csdn.net/qq_37997682/article/details/119589754我们已经实现了: 添加登录界面. UDP校验登录. 皮肤更换. 3D旋转(主 ...
- python表情包多样化聊天室_Python | 信不信我分分钟批量做你大堆的表情包?
作者 | 依然很拉风 作为一个数据分析师,应该信奉一句话----"一图胜千言".不过这里要说的并不是数据可视化,而是一款全民向的产品形态----表情包!!!! 表情包不仅仅是一种符 ...
- 为避免尬聊,我用Python爬取了一千多张斗图!
前几天和女神聊天的时候实在是太尬了,因为没有足够的斗图表情包,整个聊天的气氛都带动不起来,所以抑郁不得志! 为了追到心目中的完美女神,我爬了一千多张斗图表情包,只为下一次聊天的时候,主动权都在我的手上 ...
- JavaFX+NIO聊天室第四篇表情包
设计思路 表情包是我们聊天中经常使用的功能,他的实现有两种办法.一种是使用Unicode中编码的700多种的表情字符.另外一种是使用图片来充当表情包. 1.从2010年开始,unicode对emoji ...
- 荣耀8viper4android,[深度]选手名场面盘点之AT篇:初代全能王,当年的泰神真的很强...
本期生涯名场面的主角是被誉为"全能王"的初代明星选手-AT(阿泰). AT最早效力于XQ战队,和大多数KPL选手不同,他并没有固定在一两个位置上.职业生涯的前三场共8个小局的比赛中 ...
最新文章
- 职工信息管理程序设计c语言,C语言程序设计职工信息管理系统.docx
- CI类实现session基本用法
- substring、substr以及slice、splice用法和区别
- 脏读、幻读和不可重复读 + 事务隔离级别
- boost::scoped_ptr相关的测试程序
- 到底什么是RestFul架构?
- 人才是培养的吗? (转)
- ARM 原子操作里的两个汇编指令
- mysql 4.0手工注入_手工注入——MySQL手工注入实战和分析
- Python代码优化之in关键字
- Layui或Layuimini整合Echarts 5
- Java 读取excel 需要的jar_java自定义jar包读取Excel(包含2003和2007)数据,并举例说明...
- 解决MYSQL不报错误详细信息的问题 Can‘t find error-message file
- notion自建服务器,最详细的NOTION功能模块列表
- DTCMS插件的制作实例电子资源管理(二)Admin后台页面编写
- spring aop和事务同时开启带来的一些问题
- 委托 和 事件 总括:
- 标准Modbus通讯协议格式
- 阿里高频面试题:如何快速判断元素是不是在集合里?
- 根据string查询是否是当月_发票勾选、查询、认证等25问!简直太全了!打印出来贴在桌子上学习!...