Python基础进阶之海量表情包多线程爬虫功能的实现


Posted in Python onDecember 17, 2020

一、前言

在我们日常聊天的过程中会使用大量的表情包,那么如何去获取表情包资源呢?今天老师带领大家使用python中的爬虫去一键下载海量表情包资源

二、知识点

requests网络库
bs4选择器
文件操作
多线程

三、所用到得库

import os
import requests
from bs4 import BeautifulSoup

四、 功能

# 多线程程序需要用到的一些包
# 队列
from queue import Queue
from threading import Thread

五、环境配置

解释器 python3.6
编辑器 pycharm专业版 激活码

六、多线程类代码

# 多线程类
class Download_Images(Thread):
  # 重写构造函数
  def __init__(self, queue, path):
    Thread.__init__(self)
    # 类属性
    self.queue = queue
    self.path = path
    if not os.path.exists(path):
      os.mkdir(path)
  def run(self) -> None:
    while True:
      # 图片资源的url链接地址
      url = self.queue.get()
      try:
        download_images(url, self.path)
      except:
        print('下载失败')
      finally:
        # 当爬虫程序执行完成/出错中断之后发送消息给线程 代表线程必须停止执行
        self.queue.task_done()

七、爬虫代码

# 爬虫代码
def download_images(url, path):
  headers = {
    'User-Agent':
      'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'
  }
  response = requests.get(url, headers=headers)
  soup = BeautifulSoup(response.text, 'lxml')
  img_list = soup.find_all('img', class_='ui image lazy')
  for img in img_list:
    image_title = img['title']
    image_url = img['data-original']

    try:
      with open(path + image_title + os.path.splitext(image_url)[-1], 'wb') as f:
        image = requests.get(image_url, headers=headers).content
        print('正在保存图片:', image_title)
        f.write(image)
        print('保存成功:', image_title)
    except:
      pass

if __name__ == '__main__':
  _url = 'https://fabiaoqing.com/biaoqing/lists/page/{page}.html'
  urls = [_url.format(page=page) for page in range(1, 201)]
  queue = Queue()
  path = './threading_images/'
  for x in range(10):
    worker = Download_Images(queue, path)
    worker.daemon = True
    worker.start()
  for url in urls:
    queue.put(url)
  queue.join()
  print('下载完成...')

八、爬取效果图片

Python基础进阶之海量表情包多线程爬虫功能的实现

到此这篇关于Python基础进阶之海量表情包多线程爬虫的文章就介绍到这了,更多相关Python多线程爬虫内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python map和reduce函数用法示例
Feb 26 Python
python基于xmlrpc实现二进制文件传输的方法
Jun 02 Python
Python中使用ElementTree解析XML示例
Jun 02 Python
python字典多键值及重复键值的使用方法(详解)
Oct 31 Python
Android分包MultiDex策略详解
Oct 30 Python
Python2.7+pytesser实现简单验证码的识别方法
Dec 29 Python
Python 日志logging模块用法简单示例
Oct 18 Python
Python3直接爬取图片URL并保存示例
Dec 18 Python
Xadmin+rules实现多选行权限方式(级联效果)
Apr 07 Python
离线状态下在jupyter notebook中使用plotly实例
Apr 24 Python
解决pycharm导入numpy包的和使用时报错:RuntimeError: The current Numpy installation (‘D:\\python3.6\\lib\\site-packa的问题
Dec 08 Python
python3列表删除大量重复元素remove()方法的问题详解
Jan 04 Python
python 实现一个简单的线性回归案例
Dec 17 #Python
python BeautifulSoup库的安装与使用
Dec 17 #Python
python中翻译功能translate模块实现方法
Dec 17 #Python
python中count函数知识点浅析
Dec 17 #Python
Python 使用SFTP和FTP实现对服务器的文件下载功能
Dec 17 #Python
python爬虫利器之requests库的用法(超全面的爬取网页案例)
Dec 17 #Python
python使用smtplib模块发送邮件
Dec 17 #Python
You might like
Zend Framework实现多服务器共享SESSION数据的方法
2016/03/22 PHP
php无限级分类实现方法分析
2016/10/19 PHP
thinkPHP自动验证机制详解
2016/12/05 PHP
php 删除指定文件夹的实例讲解
2017/07/25 PHP
indexOf 和 lastIndexOf 使用示例介绍
2014/09/02 Javascript
Nodejs极简入门教程(三):进程
2014/10/27 NodeJs
Windows系统下使用Sublime搭建nodejs环境
2015/04/13 NodeJs
javascript实现倒计时(精确到秒)
2015/06/26 Javascript
jQuery实现的手机发送验证码倒计时效果代码分享
2015/08/24 Javascript
jQuery ajax动态生成table功能示例
2017/06/14 jQuery
JS兼容所有浏览器的DOMContentLoaded事件
2018/01/12 Javascript
React中使用async validator进行表单验证的实例代码
2018/08/17 Javascript
Vuex实现数据增加和删除功能
2019/11/11 Javascript
JS端基于download.js实现图片、视频时直接下载而不是打开预览
2020/05/09 Javascript
Js on及addEventListener原理用法区别解析
2020/07/11 Javascript
在vue中使用Echarts利用watch做动态数据渲染操作
2020/07/20 Javascript
vue 页面跳转的实现方式
2021/01/12 Vue.js
Python实现文件复制删除
2016/04/19 Python
Python调用C++,通过Pybind11制作Python接口
2018/10/16 Python
浅谈pandas用groupby后对层级索引levels的处理方法
2018/11/06 Python
Python 判断时间是否在时间区间内的实例
2020/05/16 Python
Python爬虫过程解析之多线程获取小米应用商店数据
2020/11/14 Python
html5基础教程常用技巧整理
2013/08/20 HTML / CSS
Canvas引入跨域的图片导致toDataURL()报错的问题的解决
2018/09/19 HTML / CSS
中国排名第一的外贸销售网站:LightInTheBox.com(兰亭集势)
2016/10/28 全球购物
哈萨克斯坦移动和数字技术在线商店:SatelOnline.kz
2020/09/04 全球购物
商场活动策划方案
2014/01/24 职场文书
教师自我鉴定范文
2014/03/20 职场文书
优质服务演讲稿
2014/05/14 职场文书
市委常委班子党的群众路线教育实践活动整改措施
2014/10/02 职场文书
优秀校长事迹材料
2014/12/24 职场文书
优秀大学生事迹材料
2014/12/24 职场文书
PHP 技巧 * SVG 保存为图片(分享图生成)
2021/04/02 PHP
python爬虫框架feapde的使用简介
2021/04/20 Python
MySQL创建高性能索引的全步骤
2021/05/02 MySQL
Python中np.random.randint()参数详解及用法实例
2022/09/23 Python