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 拷贝对象(深拷贝deepcopy与浅拷贝copy)
Sep 06 Python
windows系统中python使用rar命令压缩多个文件夹示例
May 06 Python
分享几道你可能遇到的python面试题
Jul 24 Python
Python 操作文件的基本方法总结
Aug 10 Python
利用django-suit模板添加自定义的菜单、页面及设置访问权限
Jul 13 Python
django模板加载静态文件的方法步骤
Mar 01 Python
Python秒算24点实现及原理详解
Jul 29 Python
python-序列解包(对可迭代元素的快速取值方法)
Aug 24 Python
PyQt5多线程刷新界面防假死示例
Dec 13 Python
Python列表切片常用操作实例解析
Dec 16 Python
python turtle工具绘制四叶草的实例分享
Feb 14 Python
Python实现弹球小游戏
Aug 01 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
全国FM电台频率大全 - 31 新疆维吾尔族自治区
2020/03/11 无线电
提升PHP执行速度全攻略(上)
2006/10/09 PHP
php sybase_fetch_array使用方法
2014/04/15 PHP
WordPress中缩略图的使用以及相关技巧
2015/11/24 PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
2019/04/15 PHP
Yii 实现数据加密和解密
2021/03/09 PHP
飞鱼(shqlsl) javascript作品集
2006/12/16 Javascript
javascript qq右下角滑出窗口 sheyMsg
2010/03/21 Javascript
jquery获取下拉列表的值为null的解决方法
2011/03/18 Javascript
jQuery布局插件UI Layout简介及使用方法
2013/04/03 Javascript
JavaScript解析URL参数示例代码
2013/08/12 Javascript
node.js中的events.EventEmitter.listenerCount方法使用说明
2014/12/08 Javascript
Angularjs制作简单的路由功能demo
2015/04/14 Javascript
JavaScript对象_动力节点Java学院整理
2017/06/23 Javascript
JS实现移动端判断上拉和下滑功能
2017/08/07 Javascript
如何理解Vue的.sync修饰符的使用
2017/08/17 Javascript
JS中关于正则的巧妙操作
2017/08/31 Javascript
JavaScript数组去重的几种方法
2019/04/07 Javascript
了解前端理论:rscss和rsjs
2019/05/23 Javascript
JS寄快递地址智能解析的实现代码
2020/07/16 Javascript
小程序实现录音功能
2020/09/22 Javascript
Python笔记(叁)继续学习
2012/10/24 Python
python之yield表达式学习
2014/09/02 Python
python脚本内运行linux命令的方法
2015/07/02 Python
Python和C/C++交互的几种方法总结
2017/05/11 Python
Python3数据库操作包pymysql的操作方法
2018/07/16 Python
python3 中文乱码与默认编码格式设定方法
2018/10/31 Python
python 窃取摄像头照片的实现示例
2021/01/08 Python
西班牙三叶草药房:Farmacias Trébol
2019/05/03 全球购物
十八届三中全会个人学习材料
2014/02/13 职场文书
爱情保证书大全
2014/04/29 职场文书
电子商务专业应届生求职信
2014/05/28 职场文书
2015年员工试用期工作总结
2014/12/12 职场文书
高中生物教学反思
2016/02/20 职场文书
SpringCloud Alibaba项目实战之nacos-server服务搭建过程
2021/06/21 Java/Android
Python List remove()实例用法详解
2021/08/02 Python