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 list 合并连接字符串的方法
Mar 09 Python
Python numpy生成矩阵、串联矩阵代码分享
Dec 04 Python
python中abs&map&reduce简介
Feb 20 Python
Pandas GroupBy对象 索引与迭代方法
Nov 16 Python
Python实现通过解析域名获取ip地址的方法分析
May 17 Python
pytorch中tensor.expand()和tensor.expand_as()函数详解
Dec 27 Python
Python面向对象编程基础实例分析
Jan 17 Python
python 已知三条边求三角形的角度案例
Apr 12 Python
Python文件操作及内置函数flush原理解析
Oct 13 Python
90行Python代码开发个人云盘应用
Apr 20 Python
Python中glob库实现文件名的匹配
Jun 18 Python
Python MNIST手写体识别详解与试练
Nov 07 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模板类代码
2008/09/07 PHP
php curl常见错误:SSL错误、bool(false)
2011/12/28 PHP
PHP爆绝对路径方法收集整理
2012/09/17 PHP
PHP实现移除数组中为空或为某值元素的方法
2017/01/07 PHP
PHP中include和require的区别实例分析
2017/05/07 PHP
针对PHP开发安全问题的相关总结
2019/03/22 PHP
JAVASCRIPT模式窗口中下载文件无法接收iframe的流
2013/10/11 Javascript
JavaScript弹出窗口方法汇总
2014/08/12 Javascript
js实现图片无缝滚动特效
2020/03/19 Javascript
js实现网页图片延时加载 提升网页打开速度
2016/01/26 Javascript
深入浅析JSON.parse()、JSON.stringify()和eval()的作用详解
2016/04/03 Javascript
jQuery实现鼠标悬停3d菜单展开动画效果
2017/01/19 Javascript
Vue2.x中的父子组件相互通信的实现方法
2017/05/02 Javascript
浅谈express 中间件机制及实现原理
2017/08/31 Javascript
JavaScript实现简单生成随机颜色的方法
2017/09/21 Javascript
nodejs操作mongodb的增删改查功能实例
2017/11/09 NodeJs
详解vue.js数据传递以及数据分发slot
2018/01/20 Javascript
浅析Proxy可以优化vue的数据监听机制问题及实现思路
2018/11/29 Javascript
解决Vue+Electron下Vuex的Dispatch没有效果问题
2019/05/20 Javascript
Node.js+Vue脚手架环境搭建的方法步骤
2020/03/08 Javascript
[02:40]DOTA2英雄基础教程 炼金术士
2013/12/23 DOTA
[03:44]2014DOTA2国际邀请赛 71专访:DK战队赛前讨论视频遭泄露
2014/07/13 DOTA
[01:01:41]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma BO3 第二场 1月31日
2021/03/11 DOTA
详解Python编程中包的概念与管理
2015/10/16 Python
Python 爬虫学习笔记之正则表达式
2016/09/21 Python
python解决网站的反爬虫策略总结
2016/10/26 Python
Python的numpy库中将矩阵转换为列表等函数的方法
2018/04/04 Python
python dataframe常见操作方法:实现取行、列、切片、统计特征值
2018/06/09 Python
python xpath获取页面注释的方法
2019/01/14 Python
python pandas模块基础学习详解
2019/07/03 Python
使用Python封装excel操作指南
2021/01/29 Python
信息技术专业大学生个人的自我评价
2013/10/05 职场文书
2014年依法行政工作总结
2014/11/19 职场文书
考研英语复习计划
2015/01/19 职场文书
研究生给导师的自荐信
2015/03/06 职场文书
活动宣传稿范文
2015/07/23 职场文书