欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

爬取海量表情包,让你表情包仓库持续更新,成为群里的图王(附代码)

程序员文章站 2022-03-08 13:16:21
前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 看到小伙伴一张又一张不知道从何而来的表情包是不是有点羡慕? 今天小编就带大家,使用python爬取网站表情包,打造一个自己的表情包图库,让大家斗图从此永无败绩 知识点: re ......
爬取海量表情包,让你表情包仓库持续更新,成为群里的图王(附代码)

 

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

看到小伙伴一张又一张不知道从何而来的表情包是不是有点羡慕?

今天小编就带大家,使用python爬取网站表情包,打造一个自己的表情包图库,让大家斗图从此永无败绩

知识点:

requests 的简单使用

css选择器的简单使用

os模块操作文件夹

文件保存

开发环境:

1.python环境:annaconda5.2.0(python3.6.5)

2.编辑器:pycharm

 分析:

f12检查来获取图片在源代码的位置

 

爬取海量表情包,让你表情包仓库持续更新,成为群里的图王(附代码)

 

每一次请求的url参数,几乎都一样,只有一个参数是不同的,那就是pn,它指的是当前页面中已经展示的图片数目。

我们所需要的信息都已经找到,那么开始编写代码吧

代码如下:

import requests
import parsel  #pip install parsel
import os
import concurrent.futures

headers = {
    'user-agent': 'mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/73.0.3683.86 safari/537.36'
}


def get_image_url(url):
    #url = 'https://www.fabiaoqing.com/bqb/lists/type/hot/page/1.html'
    # 发送网络请求获取网业数据
    response = requests.get(url, headers=headers)
    html = response.text
    # 对数据进行筛选
    sel = parsel.selector(html)
    image_links = sel.css('a.bqba::attr(href)').getall()
    return image_links


def get_image_info(url):
    # url = 'https://www.fabiaoqing.com/bqb/detail/id/53912.html'
    response = requests.get(url, headers=headers)
    html = response.text
    sel = parsel.selector(html)
    image_url_list = sel.css('img.bqbppdetail.lazy::attr(data-original)').getall()
    folder_name = sel.css('h1.ui.header::text').re('\w+')[0]
    print('正在下载\t{}\t表情包系列'.format(folder_name))
    return folder_name, image_url_list


def save(folder_name, image_url_list):
    for url in image_url_list:
        folder_path = '表情包/{}'.format(folder_name)
        if not os.path.exists(folder_path):
            os.mkdir(folder_path)
        image_name = url.split('/')[-1]
        file_path = folder_path + '/' + image_name
        with open(file_path, mode='wb') as f:
            f.write(requests.get(url, headers=headers).content)


def download_image(page_num):
    url_links = get_image_url('https://www.fabiaoqing.com/bqb/lists/type/hot/page/{}.html'.format(page_num))
    for url_link in url_links:
        url_link = 'https://www.fabiaoqing.com' + url_link
        folder_name, image_url_list = get_image_info(url_link)
        save(folder_name, image_url_list)


if __name__ == '__main__':
    thread_pool = concurrent.futures.threadpoolexecutor(max_workers=100)
    for i in range(1, 1041):
        thread_pool.submit(download_image, i)
    thread_pool.shutdown()

 

最终效果图:

爬取海量表情包,让你表情包仓库持续更新,成为群里的图王(附代码)

 

今天也是闲的无聊,看到好多沙雕图,就想爬下来,心情一好就爬了100页哈哈~面对五千多张表情包我也是很快乐的~

ps:如果你处于想学python或者正在学习python,python的教程不少了吧,但是是最新的吗?说不定你学了可能是两年前人家就学过的内容,在这小编分享一波2020最新的python教程。获取方式,私信小编 “ 资料 ”,即可免费获取哦!