是这样的 html
有一次想要斗图python
配图微信
就在网上搜索表情包多线程
而后发现了一个表情巨多的网站 app
不当心动起了邪念学习
产生了兴趣测试
那就优化
把它们存下来吧 网站
用 requests 请求了一下url
发现这个网站没有作反爬
发现这里有 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:
至此
几行代码就搞定了
你们在学python的时候确定会遇到不少难题,以及对于新技术的追求,这里推荐一下咱们的Python学习扣qun:784,758,214,这里是python学习者汇集地!
先来测试一下
下载一个页面的图片
能够发现
每张图片都获取到了
效果还行
不过
要下载那么多张表情包的话
这样写的代码有点慢了
仍是开启多线程吧
对于这种 IO 操做
仍是能加快很多下载时间的
queue = Queue()
在这里建立了 DownloadBiaoqingbao 这个线程类
而后建立 10 个线程
把 url 添加到队列中
来运行一下
这时候文件夹就写入表情包啦
通过一段时间
小帅b的文件夹就存满了各类表情包了哈哈哈
谁敢跟我斗图
我就砸死他
不过呢
有个问题
文件夹里面的图片太多了
须要检索一下才行
好比咱们要找到关于
小老弟
的表情包
那么咱们能够使用
glob
import glob for name in glob.glob('/home/wistbean/biaoqingbao/*小老弟*.*'): print(name)
经过 * 这个符号进行模糊匹配
运行一下能够获得全部含有“小老弟”的表情包
到这里
已经有了大量的表情包
也能够经过关键词检索到表情包了
那么如何进一步用到微信来呢
嘿嘿,我得意的笑
开下脑洞
咱们使用微信的接口和 python 对接一下
好比
我发送给个人微信说
我要关于沙雕的表情包,发 6 张来
这个时候
python接收到指令
而后就去检索表情包
发送回个人微信
能够使用 itchat 这个模块
使用网页版微信的方式登陆
itchat.auto_login(hotReload=True) itchat.run()
运行这段代码能够获得二维码
扫一下就能够登陆进去操做微信了
接着就能够根据小帅b发送过来的关键词
进行文件搜索
imgs = [] def searchImage(text): print('收到关键词: ', text) for name in glob.glob('/home/wistbean/biaoqingbao/*'+text+'*.jpg'): imgs.append(name) 你们在学python的时候确定会遇到不少难题,以及对于新技术的追求,这里推荐一下咱们的Python学习扣qun:784758214,这里是python学习者汇集地!
而后就能够在回复微信的时候发送图片给本身了
在这里就给本身发前 6 张图片吧
@itchat.msg_register([PICTURE, TEXT]) def text_reply(msg): searchImage(msg.text) for img in imgs[:6]: msg.user.send_image(img) time.sleep(0.3) print('开始发送表情:', img) imgs.clear()
但这里有个问题
就是 itchat 在发送图片的时候
中文名的文件发了没有反应
后来小帅b发现是 requests 库的问题
修改它的 fields.py
value = email.utils.encode_rfc2231(value, 'utf-8') # value = '%s*=%s' % (name, value) value = '%s="%s"' % (name, value.encode('utf-8'))
也就是将
value = '%s*=%s' % (name, value)
改为
value = '%s="%s"' % (name, value.encode('utf-8'))
ok
搞定
ok
以上
固然还能够优化一下
好比每次加载更多同类型的表情包
将表情包发送给特定的人等等
本身去玩吧