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

是这样的

有一次想要斗图

配图

就在网上搜索表情包

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

不小心动起了邪念

产生了兴趣

那就

把它们存下来吧

用 requests 请求了一下

发现这个网站没有做反爬

发现这里有 4k+ 的页面

简单的切换一下页面

可以发现

第一页的链接是这样的

https://fabiaoqing.com/biaoqing/lists/page/1.html

所以以此类推

构建一下所有url

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

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

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

在这里

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

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

所有 img 标签就可以了

可以使用??BeautifulSoup?根据类名获取

response = requests.get(url)

拿到了页面里面的所有 img

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

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

  for img in img_list:

至此

几行代码就搞定了

先来测试一下

下载一个页面的图片

可以发现

每张图片都获取到了

效果还行

不过

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

这样写的代码有点慢了

还是开启多线程吧

对于这种 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)

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

在这里就给自己发前 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

以上

当然还可以优化一下

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

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

自己去玩吧

大家在学python的时候肯定会遇到很多难题,以及对于新技术的追求,这里推荐一下我们的Python学习扣qun:784758214,这里是python学习者聚集地!!同时,自己是一名高级python开发工程师,从基础的python脚本到web开发、爬虫、django、数据挖掘等,零基础到项目实战的资料都有整理。送给每一位python的小伙伴!每日分享一些学习的方法和需要注意的小细节

原文地址:https://blog.51cto.com/14318113/2399868

时间: 2024-12-20 11:29:05

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

python爬虫教程:《利用Python爬取表情包》

python爬虫教程:<利用Python爬取表情包>,微信没有表情包?不用愁!老师带领你使用多线程爬虫一键爬取20w的表情包~ python爬虫教程:<利用Python爬取表情包>,微信没有表情包?不用愁!老师带领你使用多线程爬虫一键爬取20w的表情包~ python爬虫教程:<利用Python爬取表情包>,微信没有表情包?不用愁!老师带领你使用多线程爬虫一键爬取20w的表情包~ python爬虫教程:<利用Python爬取表情包>,微信没有表情包?不用愁!

利用Python爬取豆瓣电影

目标:使用Python爬取豆瓣电影并保存MongoDB数据库中 我们先来看一下通过浏览器的方式来筛选某些特定的电影: 我们把URL来复制出来分析分析: https://movie.douban.com/tag/#/?sort=T&range=0,10&tags=%E7%94%B5%E5%BD%B1,%E7%88%B1%E6%83%85,%E7%BE%8E%E5%9B%BD,%E9%BB%91%E5%B8%AE 有3个字段是非常重要的: 1.sort=T 2.range=0,10 3.tag

Python爬取视频指南

摘自:https://www.jianshu.com/p/9ca86becd86d 前言 前两天尔羽说让我爬一下菜鸟窝的教程视频,这次就跟大家来说说Python爬取视频的经验 正文 https://www.cniao5.com/ 菜鸟窝上有很多教程视频,但是这些视频好像没有直接的下载地址,而且有些教程视频还是有期限的,那么问题就产生了我看的速度比较慢而且视频又很多,没等我看完视频就到期了怎么办?这时候写一个爬虫将这些教程视频下载下来就很好地解决了这个问题 当然,对于某些视频网站的VIP电影.视频

使用python爬取csdn博客访问量

最近学习了python和爬虫,想写一个程序练练手,所以我就想到了大家都比较关心的自己的博客访问量,使用python来获取自己博客的访问量,这也是后边我将要进行的项目的一部分,后边我会对博客的访问量进行分析,以折线图和饼图等可视化的方式展示自己博客被访问的情况,使自己能更加清楚自己的哪些博客更受关注,博客专家请勿喷,因为我不是专家,我听他们说专家本身就有这个功能. 一.网址分析 进入自己的博客页面,网址为:http://blog.csdn.net/xingjiarong 网址还是非常清晰的就是cs

python爬取某个网站的图片并保存到本地

python爬取某个网站的图片并保存到本地 #coding:utf-8 import urllib import re import sys reload(sys) sys.setdefaultencoding('gb2312') #获取整个页面的数据 def getHtml (url): page = urllib.urlopen(url) html = page.read() return html #保存图片到本地 def getImg(html): reg = r'src="(.+?\.

python爬取某个网页的图片-如百度贴吧

python爬取某个网页的图片-如百度贴吧 作者:vpoet 日期:大约在冬季 注:随意copy,不用告诉我 #coding:utf-8 import urllib import urllib2 import re if __name__ =="__main__": rex=r'src="(http://imgsrc.baidu.com/forum/w%3D580.*?\.jpg)"'; Response=urllib2.urlopen("http://t

使用python爬取MedSci上的影响因子排名靠前的文献

使用python爬取medsci上的期刊信息,通过设定条件,然后获取相应的期刊的的影响因子排名,期刊名称,英文全称和影响因子.主要过程如下: 首先,通过分析网站http://www.medsci.cn/sci的交互过程.可以使用谷歌或火狐浏览器的“审查元素-->Network”,然后就可以看到操作页面就可以看到网站的交互信息.当在网页上点击“我要查询”时,网页会发送一个POST消息给服务器,然后,服务器返回查询结果 然后,将查询到的结果使用正则表达式提取出需要的数据. 最后将提取出的数据输出到文

Python爬取网页的三种方法

# Python爬取网页的三种方法之一:  使用urllib或者urllib2模块的getparam方法 import urllib fopen1 = urllib.urlopen('http://www.baidu.com').info() fopen2 = urllib2.urlopen('http://www.sina.com').info() print fopen1.getparam('charset') print fopen2.getparam('charset') #----有些

Python爬取京东商品数据

对京东某一商品信息页面的HTML代码进行分析,可以发现它的图书产品信息页面都含有这样一段代码(不同类的商品页面有些不同): window.pageConfig={compatible:true,searchType: 1,product:{"skuid":"11408255","name":"\u4f17\u795e\u7684\u536b\u661f\uff1a\u4e2d\u56fd\u7981\u533a","