Python基础进阶之海量表情包多线程爬虫功能的实现

一、前言

在我们日常聊天的过程中会使用大量的表情包,那么如何去获取表情包资源呢?今天老师带领大家使用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多线程爬虫内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python爬虫爬取快手视频多线程下载功能

    环境: python 2.7 + win10 工具:fiddler postman 安卓模拟器 首先,打开fiddler,fiddler作为http/https 抓包神器,这里就不多介绍. 配置允许https 配置允许远程连接 也就是打开http代理 电脑ip: 192.168.1.110 然后 确保手机和电脑是在一个局域网下,可以通信.由于我这边没有安卓手机,就用了安卓模拟器代替,效果一样的. 打开手机浏览器,输入192.168.1.110:8888   也就是设置的代理地址,安装证书之后才能

  • 基python实现多线程网页爬虫

    一般来说,使用线程有两种模式, 一种是创建线程要执行的函数, 把这个函数传递进Thread对象里,让它来执行. 另一种是直接从Thread继承,创建一个新的class,把线程执行的代码放到这个新的class里. 实现多线程网页爬虫,采用了多线程和锁机制,实现了广度优先算法的网页爬虫. 先给大家简单介绍下我的实现思路: 对于一个网络爬虫,如果要按广度遍历的方式下载,它是这样的: 1.从给定的入口网址把第一个网页下载下来 2.从第一个网页中提取出所有新的网页地址,放入下载列表中 3.按下载列表中的地

  • Python多线程、异步+多进程爬虫实现代码

    安装Tornado 省事点可以直接用grequests库,下面用的是tornado的异步client. 异步用到了tornado,根据官方文档的例子修改得到一个简单的异步爬虫类.可以参考下最新的文档学习下. pip install tornado 异步爬虫 #!/usr/bin/env python # -*- coding:utf-8 -*- import time from datetime import timedelta from tornado import httpclient, g

  • 使用Python多线程爬虫爬取电影天堂资源

    最近花些时间学习了一下Python,并写了一个多线程的爬虫程序来获取电影天堂上资源的迅雷下载地址,代码已经上传到GitHub上了,需要的同学可以自行下载.刚开始学习python希望可以获得宝贵的意见. 先来简单介绍一下,网络爬虫的基本实现原理吧.一个爬虫首先要给它一个起点,所以需要精心选取一些URL作为起点,然后我们的爬虫从这些起点出发,抓取并解析所抓取到的页面,将所需要的信息提取出来,同时获得的新的URL插入到队列中作为下一次爬取的起点.这样不断地循环,一直到获得你想得到的所有的信息爬虫的任务

  • Python多线程爬虫简单示例

    python是支持多线程的,主要是通过thread和threading这两个模块来实现的.thread模块是比较底层的模块,threading模块是对thread做了一些包装的,可以更加方便的使用. 虽然python的多线程受GIL限制,并不是真正的多线程,但是对于I/O密集型计算还是能明显提高效率,比如说爬虫. 下面用一个实例来验证多线程的效率.代码只涉及页面获取,并没有解析出来. # -*-coding:utf-8 -*- import urllib2, time import thread

  • Python3多线程爬虫实例讲解代码

    多线程概述 多线程使得程序内部可以分出多个线程来做多件事情,充分利用CPU空闲时间,提升处理效率.python提供了两个模块来实现多线程thread 和threading ,thread 有一些缺点,在threading 得到了弥补.并且在Python3中废弃了thread模块,保留了更强大的threading模块. 使用场景 在python的原始解释器CPython中存在着GIL(Global Interpreter Lock,全局解释器锁),因此在解释执行python代码时,会产生互斥锁来限

  • Python基础进阶之海量表情包多线程爬虫功能的实现

    一.前言 在我们日常聊天的过程中会使用大量的表情包,那么如何去获取表情包资源呢?今天老师带领大家使用python中的爬虫去一键下载海量表情包资源 二.知识点 requests网络库 bs4选择器 文件操作 多线程 三.所用到得库 import os import requests from bs4 import BeautifulSoup 四. 功能 # 多线程程序需要用到的一些包 # 队列 from queue import Queue from threading import Thread

  • 使用Python制作表情包实现换脸功能

    "表情包"是现在非常流行的交流方式,通过一张图片就能把文字不能表达或不便于表达的情感给表示出来,表情包一经诞生,就统治了中国人的社交圈,尤其是年轻人,他们的社交方式是所谓"天可不聊,图不可不斗",几乎任何对话都会出现表情包的身影,一言不合就斗图,自己也会在聊天中发几个表情包,可是总会造成一些小误会,比如下面的图 有好多朋友看到这个表情包之后误以为这也是我用Python做的,其实不然,这个图就是网上普通的表情包,但是今天我要用Python做几个表情包. 今天制作表情包

  • Python实现微信表情包炸群功能

    Python实现微信表情包炸群效果,具体代码如下所示: # -*- coding = utf-8 -*- # @Time : 2021/1/26 15:19 # @Author : 陈良兴 # @File : 微信表情包炸群.py # @Software : PyCharm # 运行程序 > 输入次数 > 回车 > 打开微信对话框 > 将鼠标放置在"发送"按钮处即可 from pynput.keyboard import Controller as KB #控制

  • php与python实现的线程池多线程爬虫功能示例

    本文实例讲述了php与python实现的线程池多线程爬虫功能.分享给大家供大家参考,具体如下: 多线程爬虫可以用于抓取内容了这个可以提升性能了,这里我们来看php与python 线程池多线程爬虫的例子,代码如下: php例子 <?php class Connect extends Worker //worker模式 { public function __construct() { } public function getConnection() { if (!self::$ch) { sel

  • 利用 Python 把小伙伴制作成表情包

    目录 一.项目说明 二.实现步骤 三.Python实现 1.导入需要的库 2.绘图函数 3.导入前景照片 4.等比例缩放前景照片 5.对前景照片进行二值化处理 6.提取出感兴趣区域 7.旋转图片 8.将一些不需要的黑色区域删除掉 9.再次提取感兴趣区域并缩放 10.导入背景图片 11.组合两张图片成表情包 12.在表情包下面添加文本 12.1添加英文文本 12.2添加中文文本 13.保存表情包 四.完整代码 一.项目说明 在日常生活中,我们经常会存取一些朋友们的丑照,在这个项目中,我们以萌萌哒的

  • vbs脚本和windows定时任务实现qq消息表情包定时发送功能

    目标 在某个时间唤醒电脑屏幕后,自动发送qq信息,并附带表情包,发送完毕后关闭电脑屏幕.整个过程不用过多的程序运行,我们借助vbs脚本和windows定时任务去实现这一功能. 准备 vbs代码qq信息txt文本qq文件表情包文件发送联系人的快捷方式3个windows任务 具体操作 信息和快捷方式准备 qq信息txt文本和表情包文件 桌面新建文本输入要发送的信息,保存为abc.txt, 桌面新建文件,把要放的表情包放进里面,保存为abd qq快捷方式 把联系人拖到桌面生成快捷方式,记住,qq保持登

  • 基于PyQt5制作一个表情包下载器

    每次和朋友聊天苦于没有表情包,而别人的表情包似乎是取之不尽.用之不竭.作为一个程序员哪能甘愿认输,于是做了一个表情包下载器供大家斗图. 首先,还是介绍一下设计思路吧,和我们之前做的百度图片下载器2.0一样,使用pyqt5作为UI界面制作的框架,然后就是找一个表情包网站供我们可以下载很多的表情包. 表情包使用的网站是这个,大家也可以使用自己发现的表情包网站做下载. 话不多说,我们先说明一下使用到的python库有哪些. UI界面使用到的pyqt5模块是下面这几个,之前也是一直使用这几个库做UI界面

  • Python实现多线程爬表情包详解

    目录 课程亮点 环境介绍 模块使用 流程 一. 分析我们想要的数据内容 是可以从哪里获取 二. 代码实现步骤 导入模块 单线程爬取10页数据 多进程爬取10页数据 课程亮点 系统分析目标网页 html标签数据解析方法 海量图片数据一键保存 环境介绍 python 3.8 pycharm 模块使用 requests >>> pip install requests parsel >>> pip install parsel time 时间模块 记录运行时间 流程 一. 分

  • Python自动生产表情包

    作为一个数据分析师,应该信奉一句话--"一图胜千言".不过这里要说的并不是数据可视化,而是一款全民向的产品形态--表情包!!!! 表情包不仅仅是一种符号,更是一种文化--是促进社交乃至社会发展的动力之一,就像懒.我们坚持认为,一张优秀的表情包,应该是一幅艺术品,是那忽如一夜春风来的灵感爆发,是那嘈嘈切切错杂弹的情思激荡,是那直挂云帆济沧海的壮志豪情,是那一览天下众山小的荣耀胜利--是不可以容忍码农用其惯有的形式固定.流程固定.毫无美感.毫无艺术的变幻和惊喜的直线思维解构.然而,在生产表

  • Python 基础教程之包和类的用法

    Python 基础教程之包和类的用法 建立一个文件夹filePackage 在filePackage 文件夹内创建 __init__.py 有了 __init__.py ,filePackage才算是一个包,否则只是算一个普通文件夹. 在filePackage 文件夹内创建 file.py file.py 代码如下: #!/usr/bin/env python3 # -*- coding: utf-8 -*- from datetime import datetime class MyFile(

随机推荐