码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 聊天没有表情包被嘲讽,程序员直接用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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    解析网页内容

    # 取出图片src的正则式
    imglink = re.compile(
        r'(.*?)',
        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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

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

    文件下载

    多线程下载

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

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

    成果

    在这里插入图片描述

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

    总结

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

    爬虫专栏,快来点我呀

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

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

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

    Python爬取美女图片 爬虫基础

    有缘再写,侵权立删

  • 相关阅读:
    laravel系列(三) Dcat admin框架工具表单以及普通表单的使用
    Linux搭建zookeeper与kafka集群配置
    torch版本对应的torch_geometric与torch-sprse/cluster/scatter库的正确安装
    线程同步的几种方式(2)
    数据分析师的就业前景看好
    OpenCV4 :并行计算cv::parallel_for_
    Qt富文本处理
    Windows中Jenkins安装与配置
    什么是计算机网络
    git提交代码冲突
  • 原文地址:https://blog.csdn.net/qq_43627076/article/details/119851587
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号