用python爬取 20w 表情包之后,感叹我族人是多么强大!

栏目: Python · 发布时间: 5年前

内容简介:是这样的有一次想要斗图配图

是这样的

有一次想要斗图

配图

就在网上搜索表情包

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

不小心动起了邪念

产生了兴趣

用 <a href='https://www.codercto.com/topics/20097.html'>python</a> 爬取 20w 表情包之后,感叹我族人是多么强大!

那就

把它们存下来吧

用 requests 请求了一下

发现这个网站没有做反爬

用python爬取 20w 表情包之后,感叹我族人是多么强大!

发现这里有 4k+ 的页面

用python爬取 20w 表情包之后,感叹我族人是多么强大!

简单的切换一下页面

可以发现

第一页的链接是这样的

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

所以以此类推

构建一下所有url

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

这样我们就可以得到所有表情包的链接了

我们来看一下页面里面的信息

用python爬取 20w 表情包之后,感叹我族人是多么强大!

在这里

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

所以我们只要获取到每个页面的

所有 img 标签就可以了

可以使用  BeautifulSoup 根据类名获取

response = requests.get(url)

拿到了页面里面的所有 img

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

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

for img in img_list:

至此

几行代码就搞定了

大家在学python的时候肯定会遇到很多难题,以及对于新技术的追求,这里推荐一下我们的Python学习扣qun:784,758,214,这里是python学习者聚集地!

先来测试一下

下载一个页面的图片

用python爬取 20w 表情包之后,感叹我族人是多么强大!

可以发现

每张图片都获取到了

效果还行

不过

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

这样写的代码有点慢了

用python爬取 20w 表情包之后,感叹我族人是多么强大!

还是开启多线程吧

对于这种 IO 操作

还是能加快不少下载时间的

queue = Queue()

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

然后创建 10 个线程

把 url 添加到队列中

来运行一下

用python爬取 20w 表情包之后,感叹我族人是多么强大!

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

用python爬取 20w 表情包之后,感叹我族人是多么强大!

经过一段时间

小帅b的文件夹就存满了各种表情包了哈哈哈

谁敢跟我斗图

我就砸死他

用python爬取 20w 表情包之后,感叹我族人是多么强大!

不过呢

有个问题

文件夹里面的图片太多了

需要检索一下才行

比如我们要找到关于

小老弟

的表情包

那么我们可以使用

glob

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

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

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

用python爬取 20w 表情包之后,感叹我族人是多么强大!

到这里

已经有了大量的表情包

也可以通过关键词检索到表情包了

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

嘿嘿,我得意的笑

用python爬取 20w 表情包之后,感叹我族人是多么强大!

开下脑洞

我们使用微信的接口和 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

搞定

用python爬取 20w 表情包之后,感叹我族人是多么强大!

ok

以上

当然还可以优化一下

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

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

自己去玩吧

用python爬取 20w 表情包之后,感叹我族人是多么强大!


以上所述就是小编给大家介绍的《用python爬取 20w 表情包之后,感叹我族人是多么强大!》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

创业就是要细分垄断

创业就是要细分垄断

李开复、汪华、傅盛 / 文化发展出版社 / 2017-5-1 / CNY 45.00

对各方面资源极为有限的创业公司而言,想在激烈的市场竞争中站立下来的第一步是:成为细分市场的垄断者。不管是资本还是尖端人才,追逐的永远是行业里尖端的企业,第二名毫无意义。 首先,要精准定位潜在市场。这个市场的需求仍没有被满足,并且潜力巨大。其次,抓住时代和行业的红利,通过高速增长实现“小垄断”,抢滩登陆。最后,在细分领域里建立起自己的竞争壁垒,应对巨头和竞争对手的复制,去扩展更大的市场,从而扩......一起来看看 《创业就是要细分垄断》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具