Python爬取20w+表情包,微信斗图谁怕谁!

2019 年 6 月 2 日 机器学习算法与Python学习

源 / python教程       文 / 小雨

有一次想要斗图

就在网上搜索表情包

然后发现了一个表情巨多的网站

不小心动起了邪念

产生了兴趣

那就

把它们存下来吧

用 requests 请求了一下

发现这个网站没有做反爬

发现这里有 4k+ 的页面

简单的切换一下页面

可以发现

第一页的链接是这样的

https://fabiaoqing.com/biaoqi...

所以以此类推

构建一下所有url

_url =  https://fabiaoqing.com/biaoqing/lists/page/{page}.html

我们只需要图片的地址和图片的名称即可

所以只要获取到每个页面的所有 img 标签就可以了

可以使用  BeautifulSoup 根据类名获取

response = requests.get(url)

拿到了页面里面的所有 img

就可以获取每个图片的地址和名称

从而下载到我们想要的位置

for img in img_list:

先来测试一下

下载一个页面的图片

不过

要下载那么多张表情包的话

这样写的代码有点慢了

还是开启多线程吧

queue = Queue()

在这里创建了 DownloadBiaoqingbao 这个线程类

然后创建 10 个线程

把 url 添加到队列中

来运行一下

这时候文件夹就写入表情包啦

经过一段时间

文件夹就存满了各种表情包了

谁敢跟我斗图

我就砸死他

文件夹里面的图片太多了

需要检索一下才行

比如我们要找到关于"小老弟"的表情包

使用 glob

1import glob
2for name in glob.glob( /home/wistbean/biaoqingbao/*小老弟*.* ):
3   print(name)

通过 * 这个符号进行模糊匹配

运行一下可以得到所有含有“小老弟”的表情包

那么如何进一步用到微信来呢

使用微信的接口和 python 对接一下

我发送给我的微信说

"我要关于沙雕的表情包,发 6 张来"

python接收到指令

检索表情包并发送回我的微信

可以使用 itchat 这个模块

使用网页版微信的方式登录

1itchat.auto_login(hotReload=True)
2itchat.run()

运行这段代码可以得到二维码

扫一下就可以登录进去操作微信了

进行文件搜索

1imgs = []
2
3def searchImage(text):
4    print( 收到关键词:  , text)
5    for name in glob.glob( /home/wistbean/biaoqingbao/* +text+ *.jpg ):
6        imgs.append(name)

然后就可以在回复微信的时候发送图片给自己了

在这里就给自己发前 6 张图片吧

1@itchat.msg_register([PICTURE, TEXT])
2def text_reply(msg):
3    searchImage(msg.text)
4    for img in imgs[:6]:
5        msg.user.send_image(img)
6        time.sleep(0.3)
7        print( 开始发送表情: , img)
8    imgs.clear()

但这里有个问题

 itchat 在发送图片的时候

中文名的文件发了没有反应

后来发现是 requests 库的问题

修改它的 fields.py

 1value = email.utils.encode_rfc2231(value,  utf-8 )
2# value =  %s*=%s  % (name, value)
3value =  %s="%s"  % (name, value.encode( utf-8 ))
4
5也就是将
6
7value =  %s*=%s  % (name, value)
8
9改成
10
11value =  %s="%s"  % (name, value.encode( utf-8 ))

当然还可以优化一下

比如每次加载更多同类型的表情包

将表情包发送给特定的人等等

自己去玩吧

推荐阅读

CVPR多位主席联名公开信力挺华为:IEEE限制华为等评审参会,我们不!

让你事半功倍的小众 Python 库,是不是很惊喜!

收藏!!MYSQL常用命令

Linux Shell 中的 ()、(())、[]、[[]]、{} 怎么用是不是还傻傻分不清?

喜欢就点击“在看”吧!
登录查看更多
0

相关内容

【Manning新书】现代Java实战,592页pdf
专知会员服务
98+阅读 · 2020年5月22日
【MIT】Yufei Zhao《图论与加法组合学》,177页pdf
专知会员服务
48+阅读 · 2020年4月27日
算法与数据结构Python,369页pdf
专知会员服务
160+阅读 · 2020年3月4日
【新书】Python数据科学食谱(Python Data Science Cookbook)
专知会员服务
113+阅读 · 2020年1月1日
PC微信逆向:两种姿势教你解密数据库文件
黑客技术与网络安全
16+阅读 · 2019年8月30日
手把手教你用Python做一个哄女友神器,小白可上手
网易智能菌
5+阅读 · 2019年6月15日
GitHub 热门:各大网站的 Python 爬虫登录汇总
机器学习算法与Python学习
9+阅读 · 2019年3月20日
DiscuzX 3.4 Phar反序列化漏洞
黑客工具箱
8+阅读 · 2019年1月4日
手把手教你用Python创建微信聊天机器人
新智元
4+阅读 · 2018年3月14日
浅谈浏览器 http 的缓存机制
前端大全
6+阅读 · 2018年1月21日
爬了自己的微信,原来好友都是这样的!
七月在线实验室
4+阅读 · 2018年1月18日
《小美好》短评文本情感分析+生成词云
数据挖掘入门与实战
5+阅读 · 2018年1月7日
别@微信团队了,我用Python给自己戴上了圣诞帽!
Python3爬虫之入门和正则表达式
全球人工智能
7+阅读 · 2017年10月9日
Area Attention
Arxiv
5+阅读 · 2019年2月5日
Arxiv
3+阅读 · 2018年11月29日
Knowledge Based Machine Reading Comprehension
Arxiv
4+阅读 · 2018年9月12日
Arxiv
5+阅读 · 2015年9月14日
VIP会员
相关VIP内容
【Manning新书】现代Java实战,592页pdf
专知会员服务
98+阅读 · 2020年5月22日
【MIT】Yufei Zhao《图论与加法组合学》,177页pdf
专知会员服务
48+阅读 · 2020年4月27日
算法与数据结构Python,369页pdf
专知会员服务
160+阅读 · 2020年3月4日
【新书】Python数据科学食谱(Python Data Science Cookbook)
专知会员服务
113+阅读 · 2020年1月1日
相关资讯
PC微信逆向:两种姿势教你解密数据库文件
黑客技术与网络安全
16+阅读 · 2019年8月30日
手把手教你用Python做一个哄女友神器,小白可上手
网易智能菌
5+阅读 · 2019年6月15日
GitHub 热门:各大网站的 Python 爬虫登录汇总
机器学习算法与Python学习
9+阅读 · 2019年3月20日
DiscuzX 3.4 Phar反序列化漏洞
黑客工具箱
8+阅读 · 2019年1月4日
手把手教你用Python创建微信聊天机器人
新智元
4+阅读 · 2018年3月14日
浅谈浏览器 http 的缓存机制
前端大全
6+阅读 · 2018年1月21日
爬了自己的微信,原来好友都是这样的!
七月在线实验室
4+阅读 · 2018年1月18日
《小美好》短评文本情感分析+生成词云
数据挖掘入门与实战
5+阅读 · 2018年1月7日
别@微信团队了,我用Python给自己戴上了圣诞帽!
Python3爬虫之入门和正则表达式
全球人工智能
7+阅读 · 2017年10月9日
相关论文
Area Attention
Arxiv
5+阅读 · 2019年2月5日
Arxiv
3+阅读 · 2018年11月29日
Knowledge Based Machine Reading Comprehension
Arxiv
4+阅读 · 2018年9月12日
Arxiv
5+阅读 · 2015年9月14日
Top
微信扫码咨询专知VIP会员