乐趣区

关于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 编程学习圈 ,每日干货分享,发送“J”还可支付大量学习材料,内容笼罩 Python 电子书、教程、数据库编程、Django,爬虫,云计算等等。或是返回编程学习网,理解更多编程技术常识。

退出移动版