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入门及进阶笔记 Python 内置函数小结
Aug 09 Python
在Python中使用zlib模块进行数据压缩的教程
Jun 26 Python
Python3中使用PyMongo的方法详解
Jul 28 Python
详解pyqt5 动画在QThread线程中无法运行问题
May 05 Python
Python eval的常见错误封装及利用原理详解
Mar 26 Python
Python更新所有已安装包的操作
Feb 13 Python
Python安装whl文件过程图解
Feb 18 Python
pycharm部署、配置anaconda环境的教程
Mar 24 Python
django queryset 去重 .distinct()说明
May 19 Python
如何基于python实现年会抽奖工具
Oct 20 Python
python 解决函数返回return的问题
Dec 05 Python
anaconda安装pytorch1.7.1和torchvision0.8.2的方法(亲测可用)
Feb 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
PHP 线程安全与非线程安全版本的区别深入解析
2013/08/06 PHP
PHP下通过QRCode类库创建中间带网站LOGO的二维码
2014/07/12 PHP
laravel容器延迟加载以及auth扩展详解
2015/03/02 PHP
php中static和const关键字用法分析
2016/12/07 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
jquery简单体验
2007/01/10 Javascript
js使用数组判断提交数据是否存在相同数据
2013/11/27 Javascript
用IE重起计算机或者关机的示例代码
2014/03/10 Javascript
浅析javascript中的DOM
2015/03/01 Javascript
JS扩展方法实例分析
2015/04/15 Javascript
JS实现黑客帝国文字下落效果
2015/09/01 Javascript
jQuery+css3实现转动的正方形效果(附demo源码下载)
2016/01/27 Javascript
完美实现js选项卡切换效果(一)
2017/03/08 Javascript
ES6新数据结构Map功能与用法示例
2017/03/31 Javascript
详解a++和++a的区别
2017/08/30 Javascript
JavaScript使用类似break机制中断forEach循环的方法
2018/11/13 Javascript
elementUI Tree 树形控件的官方使用文档
2019/04/25 Javascript
Map与WeakMap类型在JavaScript中的使用详解
2020/11/18 Javascript
vue $router和$route的区别详解
2020/12/02 Vue.js
Python CSV模块使用实例
2015/04/09 Python
Python闭包实现计数器的方法
2015/05/05 Python
Python跑循环时内存泄露的解决方法
2020/01/13 Python
Python3 hashlib密码散列算法原理详解
2020/03/30 Python
Python3 socket即时通讯脚本实现代码实例(threading多线程)
2020/06/01 Python
移动端Web页面的CSS3 flex布局快速上手指南
2016/05/31 HTML / CSS
分享一个H5原生form表单的checkbox特效代码
2018/02/26 HTML / CSS
html5 冒号分隔符对齐的实现
2019/07/31 HTML / CSS
Expedia印度:您的一站式在线旅游网站
2017/08/24 全球购物
世界上最大的家庭自动化公司:Smarthome
2017/12/20 全球购物
美国花园雕像和家居装饰网上商店:Design Toscano
2019/03/09 全球购物
同步和异步有何异同,在什么情况下分别使用他们?举例说明
2014/02/27 面试题
小学生成长感言
2014/01/30 职场文书
六一节目主持词
2014/04/01 职场文书
小学关爱留守儿童活动方案
2014/08/25 职场文书
聚众斗殴罪辩护词
2015/05/21 职场文书
python3读取文件指定行的三种方法
2021/05/24 Python