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 Trie树实现字典排序
Mar 28 Python
使用Python进行新浪微博的mid和url互相转换实例(10进制和62进制互算)
Apr 25 Python
python3中str(字符串)的使用教程
Mar 23 Python
Python基于回溯法子集树模板解决旅行商问题(TSP)实例
Sep 05 Python
python使用pyqt写带界面工具的示例代码
Oct 23 Python
Python实现学生成绩管理系统
Apr 05 Python
Python基于聚类算法实现密度聚类(DBSCAN)计算【测试可用】
Dec 26 Python
Python从文件中读取数据的方法讲解
Feb 14 Python
Python 将 QQ 好友头像生成祝福语的实现代码
May 03 Python
带你学习Python如何实现回归树模型
Jul 16 Python
如何理解python接口自动化之logging日志模块
Jun 15 Python
python编程项目中线上问题排查与解决
Nov 01 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+javascript实现二级级联菜单的制作
2008/05/06 PHP
基于MySQL分区性能的详细介绍
2013/05/02 PHP
使用PHP函数scandir排除特定目录
2014/06/12 PHP
纯PHP代码实现支付宝批量付款
2015/12/24 PHP
PHP实现QQ登录的开原理和实现过程
2018/02/04 PHP
PHP实现从PostgreSQL数据库检索数据分页显示及根据条件查找数据示例
2018/06/09 PHP
laravel框架模型、视图与控制器简单操作示例
2019/10/10 PHP
PHP中的异常处理机制深入讲解
2020/11/10 PHP
Javascript实现的分页函数
2007/02/07 Javascript
JS编程小常识很有用
2012/11/26 Javascript
JavaScript焦点事件、鼠标事件和滚轮事件使用详解
2016/01/15 Javascript
AngularJS入门教程之静态模板详解
2016/08/18 Javascript
jQuery  ready方法实现原理详解
2016/10/19 Javascript
canvas雪花效果核心代码分享
2017/02/19 Javascript
自定义Vue中的v-module双向绑定的实现
2019/04/17 Javascript
Vue项目中如何使用Axios封装http请求详解
2019/10/23 Javascript
Vue打包部署到Nginx时,css样式不生效的解决方式
2020/08/03 Javascript
我所理解的JavaScript中的this指向
2020/09/04 Javascript
浅析VUE防抖与节流
2020/11/24 Vue.js
举例详解Python中的split()函数的使用方法
2015/04/07 Python
Python的爬虫包Beautiful Soup中用正则表达式来搜索
2016/01/20 Python
python默认参数调用方法解析
2020/02/09 Python
python图片指定区域替换img.paste函数的使用
2020/04/09 Python
matplotlib实现数据实时刷新的示例代码
2021/01/05 Python
英国在线定做百叶窗网站:Make My Blinds
2020/08/17 全球购物
个人实用简单的自我评价
2013/10/19 职场文书
教师岗位职责范本
2013/12/29 职场文书
房产转让协议书
2014/04/11 职场文书
媒矿安全生产承诺书
2014/05/23 职场文书
完美的中文自荐信
2014/05/24 职场文书
仓管员岗位职责
2015/02/03 职场文书
写给纪委的违纪检讨书
2015/05/05 职场文书
导游词之开封禹王台风景区
2019/12/02 职场文书
浅谈resultMap的用法及关联结果集映射
2021/06/30 Java/Android
《宝可梦》动画制作25周年到来 官方发布特别纪念视频
2022/04/01 日漫
nginx静态资源的服务器配置方法
2022/07/07 Servers