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中的MongoDB基本操作:连接、查询实例
Feb 13 Python
复习Python中的字符串知识点
Apr 14 Python
windows系统下Python环境搭建教程
Mar 28 Python
Python基于QRCode实现生成二维码的方法【下载,安装,调用等】
Jul 11 Python
python入门教程 python入门神图一张
Mar 05 Python
使用Python对微信好友进行数据分析
Jun 27 Python
用Python实现数据的透视表的方法
Nov 16 Python
对pandas写入读取h5文件的方法详解
Dec 28 Python
Python获取好友地区分布及好友性别分布情况代码详解
Jul 10 Python
linux环境下Django的安装配置详解
Jul 22 Python
使用Keras加载含有自定义层或函数的模型操作
Jun 10 Python
pycharm 添加解释器的方法步骤
Aug 31 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电台频率大全 - 4 山西省
2020/03/11 无线电
php dirname(__FILE__) 获取当前文件的绝对路径
2011/06/28 PHP
PHP实现抓取迅雷VIP账号的方法
2015/07/30 PHP
php邮箱地址正则表达式验证
2015/11/13 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
不错的JS中变量相关的细节分析
2007/08/13 Javascript
JavaScript 存在陷阱 删除某一区域所有节点
2010/05/10 Javascript
自己实现string的substring方法 人民币小写转大写,数字反转,正则优化
2012/09/02 Javascript
jquery Moblie入门—hello world的示例代码学习
2013/01/08 Javascript
JavaScript中的字符串操作详解
2013/11/12 Javascript
js图片轮播特效代码分享
2015/09/07 Javascript
基于Node.js的JavaScript项目构建工具gulp的使用教程
2016/05/20 Javascript
微信小程序 摇一摇抽奖简单实例实现代码
2017/01/09 Javascript
angularjs实现的前端分页控件示例
2017/02/10 Javascript
VUE元素的隐藏和显示(v-show指令)
2017/06/23 Javascript
监听angularJs列表数据是否渲染完毕的方法示例
2018/11/07 Javascript
微信小程序环境下将文件上传到OSS的方法步骤
2019/05/31 Javascript
js实现超级玛丽小游戏
2020/03/18 Javascript
Python logging模块学习笔记
2014/05/24 Python
python使用pdfminer解析pdf文件的方法示例
2018/12/20 Python
Python-copy()与deepcopy()区别详解
2019/07/12 Python
CSS3标注引用的出处和来源的方法
2020/02/25 HTML / CSS
美国开幕式潮店:Opening Ceremony
2018/02/10 全球购物
PHP中如何使用Cookie
2015/10/28 面试题
JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
2015/10/22 面试题
Java Servlet的主要功能和作用是什么
2014/02/14 面试题
九年级政治教学反思
2014/02/06 职场文书
交通文明倡议书
2014/05/16 职场文书
关于运动会的口号
2014/06/07 职场文书
贸易经济专业自荐书
2014/06/29 职场文书
入党积极分子对十八届四中全会期盼的思想汇报
2014/10/17 职场文书
一年级语文上册复习计划
2015/01/17 职场文书
元旦联欢晚会主持词
2015/07/01 职场文书
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
2021/04/27 Python
MySQL完整性约束的定义与实例教程
2021/05/30 MySQL
Python数据分析之绘图和可视化详解
2021/06/02 Python