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中截取字符函数strip,lstrip,rstrip
Jul 17 Python
python从入门到精通(DAY 1)
Dec 20 Python
Python读大数据txt
Mar 28 Python
Django小白教程之Django用户注册与登录
Apr 22 Python
Python学习小技巧总结
Jun 10 Python
详解Django项目中模板标签及模板的继承与引用(网站中快速布置广告)
Mar 27 Python
Python Django给admin添加Action的方法实例详解
Apr 29 Python
如何通过python实现人脸识别验证
Jan 17 Python
Python datetime 格式化 明天,昨天实例
Mar 02 Python
Python如何合并多个字典或映射
Jul 24 Python
如何使用pycharm连接Databricks的步骤详解
Sep 23 Python
python代码实现备忘录案例讲解
Jul 26 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使用json_encode对变量json编码
2014/04/07 PHP
php中curl、fsocket、file_get_content三个函数的使用比较
2014/05/09 PHP
WordPress中自定义后台管理界面配色方案的小技巧
2015/12/29 PHP
Laravel 修改验证异常的响应格式实例代码详解
2020/05/25 PHP
Javascript 判断 object 的特定类转载
2007/02/01 Javascript
javascript RadioButtonList获取选中值
2009/04/09 Javascript
jQuery(非HTML5)可编辑表格实现代码
2012/12/11 Javascript
JQuery表格内容过滤的实现方法
2013/07/05 Javascript
Javascript倒计时页面跳转实例小结
2013/09/11 Javascript
jquery 缓存问题的几个解决方法
2013/11/11 Javascript
使用jQuery实现验证上传图片的格式与大小
2014/12/03 Javascript
JS简单实现城市二级联动选择插件的方法
2015/08/19 Javascript
JavaScript+html5 canvas制作的百花齐放效果完整实例
2016/01/26 Javascript
jQuery插件jquery.kxbdmarquee.js实现无缝滚动效果
2017/02/15 Javascript
vue-cli如何添加less 以及sass
2017/07/06 Javascript
vue.js国际化 vue-i18n插件的使用详解
2017/07/07 Javascript
vuex学习之Actions的用法详解
2017/08/29 Javascript
JavaScript数组、json对象、eval()函数用法实例分析
2019/02/21 Javascript
react native 原生模块桥接的简单说明小结
2019/02/26 Javascript
Vue 权限控制的两种方法(路由验证)
2019/08/16 Javascript
[03:40]DOTA2亚洲邀请赛小组赛第二日 赛事回顾
2015/01/31 DOTA
python生成日历实例解析
2014/08/21 Python
Python contextlib模块使用示例
2015/02/18 Python
Python判断某个用户对某个文件的权限
2016/10/13 Python
Python 读取图片文件为矩阵和保存矩阵为图片的方法
2018/04/27 Python
django富文本编辑器的实现示例
2019/04/10 Python
线程安全及Python中的GIL原理分析
2019/10/29 Python
Pytorch之保存读取模型实例
2019/12/30 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
2020/06/24 Python
CSS3实现多背景模拟动态边框的效果
2016/11/08 HTML / CSS
英国领先的游戏零售商:GAME
2019/09/24 全球购物
致标枪运动员广播稿
2014/02/06 职场文书
会计出纳岗位职责
2015/03/31 职场文书
最感人的道歉情书
2015/05/12 职场文书
情侣之间的道歉短信
2015/05/12 职场文书
读《茶花女》有感:山茶花的盛开与凋零
2020/01/17 职场文书