聊天没有表情包被嘲讽,程序员直接用python爬取了十万张表情包[通俗易懂]

聊天没有表情包被嘲讽,程序员直接用python爬取了十万张表情包[通俗易懂]聊天没有表情包被嘲讽,程序员直接用python爬取了十万张表情包前言分析页面具体实现解析页面获取网页内容解析网页内容文件下载多线程下载成果总结前言事情要从几天前说起,我有一个朋友,他在和他喜欢的小姐姐聊天时,聊天的气氛一直非常尬,这时他就想发点表情包来缓和一下气氛,但一看自己的表情包收藏都是这样的。。。。。。这发过去,基本就直接和小姐姐说拜拜了,然后他就向我求救问我有没有表情包,表情包我是没有,但网站有呀,来来,爬虫整起。分析页面今天爬取的网站是斗图吧,有一说一表情包是真的多,看这惊人的页数

大家好,又见面了,我是你们的朋友全栈君。

前言

事情要从几天前说起,我有一个朋友,他在和他喜欢的小姐姐聊天时,聊天的气氛一直非常尬,这时他就想发点表情包来缓和一下气氛,但一看自己的表情包收藏都是这样的。。。
在这里插入图片描述
。。。这发过去,基本就直接和小姐姐说拜拜了,然后他就向我求救问我有没有表情包,表情包我是没有,但网站有呀,来来,爬虫整起。
在这里插入图片描述

分析页面

今天爬取的网站是斗图吧,有一说一表情包是真的多,看这惊人的页数聊天没有表情包被嘲讽,程序员直接用python爬取了十万张表情包[通俗易懂]
接下来就该看看怎么拿到表情包图片的url了,首先打开谷歌浏览器,然后点F12进入爬虫快乐模式
在这里插入图片描述
然后完成下图的操作,先点击1号箭头,然后再选中一个表情包即可,红色框中就是我们要爬取的对象,其中表情包的src就在里面
在这里插入图片描述
现在我们就搞清楚了怎么拿到表情包的url了,就开始写代码了

具体实现

解析页面

获取网页内容

这里就是获取爬取网页的信息

def askURL(url):
    head = { 
   
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36"
    }
    req = urllib.request.Request(url=url, headers=head)
    html = ""
    try:
        response = urllib.request.urlopen(req)
        html = response.read()
    except Exception as result:
        print(result)
    return html

解析网页内容

# 取出图片src的正则式
imglink = re.compile(
    r'<img alt="(.*?)" class="img-responsive lazy image_dta" data-backup=".*?" data-original="(.*?)" referrerpolicy="no-referrer" src=".*?"/>',
    re.S)
def getimgsrcs(url):
    html = askURL(url)
    bs = BeautifulSoup(html, "html.parser")
    names = []
    srcs = []
    # 找到所有的img标签
    for item in bs.find_all('img'):
        item = str(item)
        # 根据上面的正则表达式规则把图片的src以及图片名拿下来
        imgsrc = re.findall(imglink, item)
        # 这里是因为拿取的img标签可能不是我们想要的,所以匹配正则规则之后可能返回空值,因此判断一下
        if (len(imgsrc) != 0):
            imgname = ""
            if imgsrc[0][0] != '':
                imgname = imgsrc[0][0] + '.' + getFileType(imgsrc[0][1])
            else:
                imgname = getFileName(imgsrc[0][1])
            names.append(imgname)
            srcs.append(imgsrc[0][1])
    return names, srcs

到现在为止,已经拿到了所有的图片的链接和名字,那么就可以开始下载了

文件下载

多线程下载

因为文件实在有点多,所以最好采用多线程的方式下载,我这里只是给了一个样例,大家按照这个逻辑写一下就好

 pool = ThreadPoolExecutor(max_workers=50)
         for j in range(len(names)):
            pool.submit(FileDownload.downloadFile, urls[j], filelocation[j])
 

成果

在这里插入图片描述

在这里插入图片描述
总共是爬了十万多张表情包,这次咱也是表情包大户了
在这里插入图片描述

总结

很简单的一个爬虫,适合我这样的初学者练练手,如果对爬虫有兴趣的话可以看看我的爬虫专栏的其他文章,说不定也有你喜欢的

爬虫专栏,快来点我呀

两行代码爬取微博热搜,并实现邮件提醒功能,妈妈再也不用担心我吃不到瓜了 爬虫基础

python爬取4k小姐姐图片 人生苦短 我用python

python爬b站视频 人生苦短 我用python

Python爬取美女图片 爬虫基础

有缘再写,侵权立删

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/144081.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • git clone克隆或下载一个仓库单个文件夹

    git clone克隆或下载一个仓库单个文件夹git学习之gitclone克隆或下载一个仓库单个文件夹有时候因为需要我们只想gitclone下仓库的单个或多个文件夹,而不是全部的仓库内容,这样就很省事,所以下面就开始教程啦在Git1.7.0以前,这无法实现,但是幸运的是在Git1.7.0以后加入了SparseCheckout模式,这使得CheckOut指定文件或者文件夹成为可能。举个例子:现在有…

    2022年7月21日
    83
  • pycharm使用小技巧_pycharm基本使用方法

    pycharm使用小技巧_pycharm基本使用方法Pycharm作为Python开发最常用的IDE之一,不仅兼容性好,而且功能也相当丰富,比如调试、语法高亮、智能提示等等功能,它还支持web开发框架比如Django等,当你熟悉了它之后,开发效率是相当之高的。但对于新手来说,Pycharm功能丰富的同时也是一把双刃剑,有的小伙伴刚上手之后看到一堆的英文界面难免会懵逼,哈哈哈,没有关系,今天博主就来教大家一些Pycharm最常用的技巧,以及一些pycharm常用的快捷键,让你快速上手Python开发中最常用的IDEPycharm,跟上老司机的车速!一

    2022年8月28日
    2
  • python如何读写excel文件「建议收藏」

    python如何读写excel文件「建议收藏」python读写excel的方式有很多,不同的模块在读写的方法上稍有区别:用xlrd和xlwt进行excel读写;用openpyxl进行excel读写;用pandas进行excel读写;为了方便演示,我这里新建了一个data.xlsx…

    2022年4月19日
    49
  • 再eclipse查看某个java类属于哪个jar包

    再eclipse查看某个java类属于哪个jar包

    2021年7月16日
    156
  • Git使用详细教程

    Git使用详细教程

    2021年10月10日
    39
  • rider 激活码【2021.10最新】

    (rider 激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~23LN…

    2022年3月29日
    73

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号