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通过ftplib登录到ftp服务器的方法
May 08 Python
python开发之str.format()用法实例分析
Feb 22 Python
Python实现压缩与解压gzip大文件的方法
Sep 18 Python
Python基于递归算法实现的走迷宫问题
Aug 04 Python
python并发2之使用asyncio处理并发
Dec 21 Python
Python获取网段内ping通IP的方法
Jan 31 Python
python读csv文件时指定行为表头或无表头的方法
Jun 26 Python
python opencv 批量改变图片的尺寸大小的方法
Jun 28 Python
Python实现K折交叉验证法的方法步骤
Jul 11 Python
django做form表单的数据验证过程详解
Jul 26 Python
docker django无法访问redis容器的解决方法
Aug 21 Python
Python爬取豆瓣视频信息代码实例
Nov 16 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读取文件内容到数组的方法
2015/03/16 PHP
PHP语法小结之基础和变量
2015/11/22 PHP
php正则提取html图片(img)src地址与任意属性的方法
2017/02/08 PHP
php中的异常和错误浅析
2017/05/03 PHP
event.srcElement+表格应用
2006/08/29 Javascript
用JavaScript对JSON进行模式匹配(Part 1-设计)
2010/07/17 Javascript
javascript 冒泡排序 正序和倒序实现代码
2010/12/14 Javascript
禁用键盘上的(全局)指定键兼容iE、Chrome、火狐
2013/05/14 Javascript
js星星评分效果
2014/07/24 Javascript
jQuery插件zepto.js简单实现tab切换
2015/06/16 Javascript
14款经典网页图片和文字特效的jQuery插件-前端开发必备
2015/08/25 Javascript
AngularJS控制器之间的数据共享及通信详解
2016/08/01 Javascript
js封装tab标签页实例分享
2016/12/19 Javascript
基于BootStrap与jQuery.validate实现表单提交校验功能
2016/12/22 Javascript
vue cli 全面解析
2018/02/28 Javascript
完美解决iview 的select下拉框选项错位的问题
2018/03/02 Javascript
解决layui中table异步数据请求不支持自定义返回数据格式的问题
2018/08/19 Javascript
js实现web调用摄像头 js截取视频画面
2019/04/21 Javascript
一百行JS代码实现一个校验工具
2019/04/30 Javascript
微信小程序实现动态列表项的顺序加载动画
2019/07/25 Javascript
layui form表单提交之后重新加载数据表格的方法
2019/09/11 Javascript
Vue 嵌套路由使用总结(推荐)
2020/01/13 Javascript
Python中的上下文管理器和with语句的使用
2018/04/17 Python
Python Opencv实现图像轮廓识别功能
2020/03/23 Python
Python实现使用request模块下载图片demo示例
2019/05/24 Python
Python函数基本使用原理详解
2020/03/19 Python
深入浅析HTML5中的SVG
2015/11/27 HTML / CSS
使用HTML5 Geolocation实现一个距离追踪器
2018/04/09 HTML / CSS
《画风》教学反思
2014/04/16 职场文书
大学毕业生推荐信
2014/07/09 职场文书
住房抵押登记委托书
2014/09/27 职场文书
2014年保安个人工作总结
2014/11/13 职场文书
网络管理员岗位职责
2015/02/12 职场文书
趣味运动会新闻稿
2015/07/17 职场文书
Python 解决空列表.append() 输出为None的问题
2021/05/23 Python
Mysql 数据库中的 redo log 和 binlog 写入策略
2022/04/26 MySQL