Python实战——表情包爬虫,让你拥有数之不尽的表情包(^_^)

前言: 每次发表情包的时候总是会愁自己表情包太少了,用来用去就那些,很头疼,现在写一个爬虫爬取表情包,以后再也不用愁没表情包了!

爬取的网站网址为:表情包网址

先来看看网站长啥样
在这里插入图片描述
看到这么多表情包就很开心,一个一个保存太麻烦了,爬就完事了!

源代码:

#  _*_ coding: utf-8 _*_

'''
Author:Chen Wei

date: 23:12

Repetition is  the key to success!
'''

import time
import os
import concurrent.futures

import requests
import parsel


"""图片保存文件夹"""
dirname = 'images'
if not os.path.exists(dirname):
    os.makedirs(dirname)    # 文件不存在就新生成一个文件夹(使用的相对路径)
    os.chdir(dirname)     # 更换当前的文件夹到新创建的那个去
else:                        # 如果已经存在
    os.chdir(dirname)

def get_img_urls(url):
    """下载图片"""
    response = requests.get(url)
    html = response.text   # 网页源代码
    '''解析网页中的内容'''
    sel = parsel.Selector(html)
    divs = sel.css('.tagbqppdiv')    # 获取相应的css文件
    for div in divs:
        link = div.css('img.ui::attr(data-original)').extract_first()
        name = div.css('a::attr(title)').extract_first()
        yield link, name

def download_img(link:str,name:str):
    '''下载并保存图片'''
    try:
        suffix = link.split('.')[-1]
        response = requests.get(link)
        with open(name + '.' + suffix, mode='wb') as f:
            f.write(response.content)
    except OSError:
        print('文件名非法')

def main():
    url = 'https://fabiaoqing.com/biaoqing/lists/page/2.html'
    links = get_img_urls(url)
    for link in links:
        download_img(*link)


if __name__ == '__main__':
    executor1 = concurrent.futures.ThreadPoolExecutor(max_workers=10)    # 实例化一个由10个线程的多线程对象
    url = 'https://fabiaoqing.com/biaoqing/lists/page/{page}.html'
    links = get_img_urls(url)
    start_time = time.time()
    for link in links:
        executor1.submit(download_img,*link)     # 多线程调用
    executor1.shutdown()     # 发出让执行者释放所有资源的信号
    print(time.time() - start_time)

只要运行以上代码,便会爬取海量表情包,这些表情包会保存在代码所在文件夹里的一个子文件夹中。有了这些表情包,就可以尽情去斗图了^ _ ^。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三只佩奇不结义

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值