Python爬取20w+表情包,微信斗图谁怕谁! |
您所在的位置:网站首页 › 微信爬虫表情 › Python爬取20w+表情包,微信斗图谁怕谁! |
源 / 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 glob2for name in glob.glob( /home/wistbean/biaoqingbao/*小老弟*.* ):3 print(name)import glob2for name in glob.glob( /home/wistbean/biaoqingbao/*小老弟*.* ):3 print(name)通过 * 这个符号进行模糊匹配 运行一下可以得到所有含有“小老弟”的表情包 那么如何进一步用到微信来呢 使用微信的接口和 python 对接一下 我发送给我的微信说 "我要关于沙雕的表情包,发 6 张来" python接收到指令 检索表情包并发送回我的微信 可以使用 itchat 这个模块 使用网页版微信的方式登录 1itchat.auto_login(hotReload=True)2itchat.run()True)2itchat.run()运行这段代码可以得到二维码 扫一下就可以登录进去操作微信了 进行文件搜索 1imgs = []23def searchImage(text):4 print( 收到关键词: , text)5 for name in glob.glob( /home/wistbean/biaoqingbao/* +text+ *.jpg ):6 imgs.append(name)23def searchImage(text):4 print( 收到关键词: , text)5 for name in glob.glob( /home/wistbean/biaoqingbao/* +text+ *.jpg ):6 imgs.append(name)然后就可以在回复微信的时候发送图片给自己了 在这里就给自己发前 6 张图片吧 [email protected]_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.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改成1011value = %s="%s" % (name, value.encode( utf-8 ))-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改成1011value = %s="%s" % (name, value.encode( utf-8 ))当然还可以优化一下 比如每次加载更多同类型的表情包 将表情包发送给特定的人等等 自己去玩吧 推荐阅读 CVPR多位主席联名公开信力挺华为:IEEE限制华为等评审参会,我们不! 让你事半功倍的小众 Python 库,是不是很惊喜! 收藏!!MYSQL常用命令 Linux Shell 中的 ()、(())、[]、[[]]、{} 怎么用是不是还傻傻分不清? |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |