聊天没有表情包被嘲讽,程序员直接用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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • win server 2008 R2 支持[通俗易懂]

    win server 2008 R2 支持[通俗易懂]win server 2008 R2 支持

    2022年4月20日
    74
  • SecureCRT乱码问题解决方法[通俗易懂]

    网上有很多达人给出了SecureCRT登录linux,中文乱码问题的解决办法,我这里总结一下解决思路,原因还是SecureCRT客户端字体/字符集的原因,主要分以下两种情况解决:一后台刷日志时(tail–flogs/jboss_stdout.log)
    首先,确保Linux下的文件(比如日志)在Windows下打开没有乱码,显示正常就表明linux的字符集设置没有问题,不用去修改;
    其次,修改SecureCRT中的SessionOptions参数配置,如图中的红框:

    2022年4月8日
    36
  • adb出现adb server is out of date时的解决的方法「建议收藏」

    adb出现adb server is out of date时的解决的方法「建议收藏」出错的原因是adb的port被其它程序的进程占据了,所以要做的就是找到并kill该进程。步骤:、1、在cmd中运行adbnodaemonserver,查看adb的port号是多少,普通情况下是50

    2022年7月2日
    49
  • sql清空表数据命令

    sql清空表数据命令有三种清空方式:1.delete逐行删除表数据速度比较慢,不适合删除数据量大的表。2.truncate删除表中所有数据并且保留表结构,但是不能撤消还原。3.drop表数据和表结构一起删除,在实践过程中删除大数据量表数据。使用1,2这两种方法需要等待好久才能清空完成。有一个较快的方法是先导出表结构,首先对原先表进行删除,然后再重建。…

    2022年6月13日
    104
  • PetShop4分析随手贴

    PetShop4分析随手贴 PetShop4简析  跟踪顺序为1.Web/Controls/ItemsControl.ascx.cs2./BLL/Item.cs(此处用工厂实现下面的Item)3./IDAL/IItem.cs/DALFactory/DataAccess.cs(工厂)/Web/web.config(path)/SQLServerDAL/Item.cs(IItem的实

    2022年10月10日
    0
  • postman最新版_postcrossing中文版

    postman最新版_postcrossing中文版PostmanCn最新版本:7.36.1更新时间:2020-12-18点击下载https://www.postman.com/downloads/这个是Postman官网的下载页面https://gitee.com/hlmd/PostmanCn/attach_files/492931/download/postman_EnToCn.zip这个是这里的汉化的介绍Postman中文版汉化持续更新中安装教程WindowsPostman-*-win64-中文版…

    2022年9月28日
    0

发表回复

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

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