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利用不到一百行代码实现一个小siri
Mar 02 Python
解决python使用open打开文件中文乱码的问题
Dec 29 Python
Pycharm 操作Django Model的简单运用方法
May 23 Python
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
Jul 27 Python
python开发游戏的前期准备
May 05 Python
python安装virtualenv虚拟环境步骤图文详解
Sep 18 Python
python3.6、opencv安装环境搭建过程(图文教程)
Nov 05 Python
使用python创建Excel工作簿及工作表过程图解
May 27 Python
python获取淘宝服务器时间的代码示例
Apr 22 Python
python 解决微分方程的操作(数值解法)
May 26 Python
Pytorch 如何实现常用正则化
May 27 Python
利用Matlab绘制各类特殊图形的实例代码
Jul 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 判断变量类型实现代码
2009/10/23 PHP
php中如何同时使用session和cookie来保存用户登录信息
2013/07/05 PHP
使用php判断服务器是否支持Gzip压缩功能
2013/09/24 PHP
FCK调用方法..
2006/12/21 Javascript
一些常用的Javascript函数
2006/12/22 Javascript
9个JavaScript评级/投票插件
2010/01/18 Javascript
js 内存释放问题
2010/04/25 Javascript
Android中资源文件(非代码部分)的使用概览
2012/12/18 Javascript
js获得指定控件输入光标的坐标兼容IE,Chrome,火狐等多种主流浏览器
2013/05/21 Javascript
JQueryiframe页面操作父页面中的元素与方法(实例讲解)
2013/11/19 Javascript
原生javascript获取元素样式
2014/12/31 Javascript
使用mouse事件实现简单的鼠标经过特效
2015/01/30 Javascript
JQuery实现列表中复选框全选反选功能封装(推荐)
2016/11/24 Javascript
JS实现的DIV块来回滚动效果示例
2017/02/07 Javascript
node.js中路由,中间件,ge请求和post请求的参数详解
2017/12/26 Javascript
Vue shopCart 组件开发详解
2018/01/26 Javascript
Angular浏览器插件Batarang介绍及使用
2018/02/07 Javascript
Vue在页面右上角实现可悬浮/隐藏的系统菜单
2018/05/04 Javascript
vue项目中mock.js的使用及基本用法
2019/05/22 Javascript
Angular之jwt令牌身份验证的实现
2020/02/14 Javascript
jQuery事件模型默认行为执行顺序及trigger()与 triggerHandler()比较实例分析
2020/04/30 jQuery
使用Python脚本将Bing的每日图片作为桌面的教程
2015/05/04 Python
一个基于flask的web应用诞生 使用模板引擎和表单插件(2)
2017/04/11 Python
Django跨域请求问题的解决方法示例
2018/06/16 Python
Python使用sklearn实现的各种回归算法示例
2019/07/04 Python
Python使用Selenium模拟浏览器自动操作功能
2020/09/08 Python
微软开源最强Python自动化神器Playwright(不用写一行代码)
2021/01/05 Python
Python实现区域填充的示例代码
2021/02/03 Python
html5中地理位置定位api接口开发应用小结
2013/01/04 HTML / CSS
英国排名第一的最新设计师品牌手表独立零售商:TIC Watches
2016/09/24 全球购物
Nicole Miller官方网站:纽约女装品牌
2019/09/14 全球购物
学院领导推荐信
2013/10/30 职场文书
幼儿教师寄语集锦
2014/04/03 职场文书
2014年五四青年节活动策划书
2014/04/22 职场文书
Pytorch 中net.train 和 net.eval的使用说明
2021/05/22 Python
《巫师》是美食游戏?CDPR10月将推出《巫师》官方食谱
2022/04/03 其他游戏