大家好呀,我是辣条。

写这篇文章的灵感来源于之前和朋友的聊天,真的无力吐槽了,想发适合的表情包怼回去却发现收藏的表情包就那几个,就想着是不是可以爬取一些表情包,再也不用尬聊了。

先给大家看看我遇到的聊天最尬的场面:


斗图吧图片采集

  • 抓取目标
  • 工具使用
  • 重点内容学习
  • 项目思路分析
  • 整理需求
  • 简易源码分享

抓取目标

网站:斗图吧

工具使用

开发环境: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开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

聊天尬死名场面,你遇到过吗?教你一键获取斗图表情包,晋升聊天达人相关推荐

  1. 聊天尬住了?教你用Python一键获取斗图表情包,从此摇身变海王

    很多兄弟在聊天上没有下太多的功夫,导致自己聊天的时候很容易尬住,然后就不知道聊啥了,这时候合适表情包分分钟就能救场,但是一看自己收藏的表情包,好家伙,两只手都数得过来. 所以今天来给兄弟们分享一下爬取 ...

  2. 聊天突然尬住?教你用Python一键获取斗图表情包,各种表情包轻松化解尴尬

    很多兄弟在聊天上没有下太多的功夫,导致自己聊天的时候很容易尬住,然后就不知道聊啥了,这时候合适表情包分分钟就能救场,但是一看自己收藏的表情包,好家伙,两只手都数得过来. 所以今天来给兄弟们分享一下爬取 ...

  3. QQ集体被盗号,猝不及防的大型社死名场面

    中国互联网行业许久没发生什么轰动全网的大新闻了. 但是,不论是历史还是现实都告诉我们: 平静的大海看似毫无波澜,是因为它在酝酿更大的风暴. 6月26号晚上,网民们一如既往地在线欢乐冲浪.划水.打游戏. ...

  4. Qt Quick实现局域网聊天V4版本(支持GIF动图表情包、消息聊天、拖动缩放窗口、支持Linux编译)

    Qt Quick实现局域网聊天V4版本(支持GIF动图表情包.消息聊天.拖动缩放窗口.支持Linux编译) 随着社交网络的普及,人们的聊天方式也变得更加高效和便捷.在这里,我们将利用Qt Quick构 ...

  5. 40.qt quick- 高仿微信实现局域网聊天V4版本(支持gif动图表情包、消息聊天、拖动缩放窗口、支持Linux编译)...

    在上章https://blog.csdn.net/qq_37997682/article/details/119589754我们已经实现了: 添加登录界面. UDP校验登录. 皮肤更换. 3D旋转(主 ...

  6. python表情包多样化聊天室_Python | 信不信我分分钟批量做你大堆的表情包?

    作者 | 依然很拉风 作为一个数据分析师,应该信奉一句话----"一图胜千言".不过这里要说的并不是数据可视化,而是一款全民向的产品形态----表情包!!!! 表情包不仅仅是一种符 ...

  7. 为避免尬聊,我用Python爬取了一千多张斗图!

    前几天和女神聊天的时候实在是太尬了,因为没有足够的斗图表情包,整个聊天的气氛都带动不起来,所以抑郁不得志! 为了追到心目中的完美女神,我爬了一千多张斗图表情包,只为下一次聊天的时候,主动权都在我的手上 ...

  8. JavaFX+NIO聊天室第四篇表情包

    设计思路 表情包是我们聊天中经常使用的功能,他的实现有两种办法.一种是使用Unicode中编码的700多种的表情字符.另外一种是使用图片来充当表情包. 1.从2010年开始,unicode对emoji ...

  9. 荣耀8viper4android,[深度]选手名场面盘点之AT篇:初代全能王,当年的泰神真的很强...

    本期生涯名场面的主角是被誉为"全能王"的初代明星选手-AT(阿泰). AT最早效力于XQ战队,和大多数KPL选手不同,他并没有固定在一两个位置上.职业生涯的前三场共8个小局的比赛中 ...

最新文章

  1. 职工信息管理程序设计c语言,C语言程序设计职工信息管理系统.docx
  2. CI类实现session基本用法
  3. substring、substr以及slice、splice用法和区别
  4. 脏读、幻读和不可重复读 + 事务隔离级别
  5. boost::scoped_ptr相关的测试程序
  6. 到底什么是RestFul架构?
  7. 人才是培养的吗? (转)
  8. ARM 原子操作里的两个汇编指令
  9. mysql 4.0手工注入_手工注入——MySQL手工注入实战和分析
  10. Python代码优化之in关键字
  11. Layui或Layuimini整合Echarts 5
  12. Java 读取excel 需要的jar_java自定义jar包读取Excel(包含2003和2007)数据,并举例说明...
  13. 解决MYSQL不报错误详细信息的问题 Can‘t find error-message file
  14. notion自建服务器,最详细的NOTION功能模块列表
  15. DTCMS插件的制作实例电子资源管理(二)Admin后台页面编写
  16. spring aop和事务同时开启带来的一些问题
  17. 委托 和 事件 总括:
  18. 标准Modbus通讯协议格式
  19. 阿里高频面试题:如何快速判断元素是不是在集合里?
  20. 根据string查询是否是当月_发票勾选、查询、认证等25问!简直太全了!打印出来贴在桌子上学习!...

热门文章

  1. 如何用HTML制作一个房子,一分钟,教会你农村自建房该怎么设计!小白学了都能上手画出设计图!...
  2. Vue项目实战---外卖app笔记
  3. 教你设置一个彰显个性的U盘图标和背景
  4. vant点击 选择时间 弹出 pop
  5. STL——翻转字符串
  6. 全球及中国同轴衰减器行业竞争态势及未来发展趋势预测报告2022-2028年
  7. 三维空间点云拟合问题
  8. alc236黑苹果驱动_黑苹果AMD显卡驱动优化,大幅提升性能!
  9. 知识图谱brat标注工具的用法
  10. web前端学习-html(北京科技大学)