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 greenlet实现原理和使用示例
Sep 24 Python
Python实现的简单文件传输服务器和客户端
Apr 08 Python
python字典快速保存于读取的方法
Mar 23 Python
python 爬虫一键爬取 淘宝天猫宝贝页面主图颜色图和详情图的教程
May 22 Python
python调用摄像头显示图像的实例
Aug 03 Python
Numpy与Pytorch 矩阵操作方式
Dec 27 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
Jan 18 Python
将pytorch转成longtensor的简单方法
Feb 18 Python
Python3将ipa包中的文件按大小排序
Apr 17 Python
Python selenium模拟手动操作实现无人值守刷积分功能
May 13 Python
快速解决pymongo操作mongodb的时区问题
Dec 05 Python
Python 求向量的余弦值操作
Mar 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
php 购物车实例(申精)
2009/05/11 PHP
php 文件夹删除、php清除缓存程序
2009/08/25 PHP
php 数组使用详解 推荐
2011/06/02 PHP
thinkphp判断访客为手机端或PC端的方法
2014/11/24 PHP
smarty内置函数config_load用法实例
2015/01/22 PHP
PHP中使用php://input处理相同name值的表单数据
2015/02/03 PHP
php实现Mysql简易操作类
2015/10/11 PHP
php用户登录之cookie信息安全分析
2016/05/13 PHP
php实现异步将远程链接上内容(图片或内容)写到本地的方法
2016/11/30 PHP
技术男用来对妹子表白的百度首页
2014/07/23 Javascript
javascript实现ecshop搜索框键盘上下键切换控制
2015/03/18 Javascript
js实现兼容性好的微软官网导航下拉菜单效果
2015/09/07 Javascript
深入分析jsonp协议原理
2015/09/26 Javascript
jQuery插件formValidator实现表单验证
2016/05/23 Javascript
浅谈JS继承_借用构造函数 & 组合式继承
2016/08/16 Javascript
关于在mongoose中填充外键的方法详解
2017/08/14 Javascript
前端跨域的几种解决方式总结(推荐)
2017/08/16 Javascript
在原生不支持的旧环境中添加兼容的Object.keys实现方法
2017/09/11 Javascript
angularJs中ng-model-options设置数据同步的方法
2018/09/30 Javascript
原生js实现瀑布流效果
2020/03/09 Javascript
Node.js Domain 模块实例详解
2020/03/18 Javascript
[00:43]2016完美“圣”典风云人物:单车宣传片
2016/12/02 DOTA
学习python类方法与对象方法
2016/03/15 Python
python批量下载抖音视频
2019/06/17 Python
python实现Dijkstra算法的最短路径问题
2019/06/21 Python
Django中间件拦截未登录url实例详解
2019/09/03 Python
读取nii或nii.gz文件中的信息即输出图像操作
2020/07/01 Python
资生堂美国官网:Shiseido美国
2016/09/02 全球购物
阿迪达斯荷兰官方网站:adidas荷兰
2018/03/16 全球购物
工程监理应届生求职信
2013/11/09 职场文书
实习生自我鉴定范文
2013/12/05 职场文书
农村党员对照检查材料
2014/09/24 职场文书
2015年大学生社会实践评语
2015/03/26 职场文书
国庆放假通知怎么写
2015/07/30 职场文书
民警忠诚教育心得体会
2016/01/23 职场文书
CSS实现渐变色边框(Gradient borders)的5种方法
2022/03/25 HTML / CSS