scrapy--图片管道-ImagesPipeline

news2024/11/13 9:10:11

免责声明:本文仅做演示与分享~ 

目录

介绍

 ImagesPipeline

pipelines.py

items.py

zz.py

settings.py


介绍

scrapy 还提供了处理图片、视频、音频等媒体文件的插件,如:

- scrapy-images:用于下载和处理图片

- scrapy-video:用于下载和处理视频

- scrapy-podcast:用于下载和处理播客

- scrapy-feedstorage:用于存储和处理RSS/Atom订阅源

- scrapy-splash:用于渲染JavaScript渲染后的网页

- scrapy-cdr:用于处理爬取数据并生成CDR(Call Detail Record,呼叫详单记录)

这些插件可以帮助我们更好地处理媒体文件,提高爬虫的效率。


scrapy 还额外提供了一种保存图片的方法:

 ImagesPipeline

pip install Pillow  # python的图像处理库


站长素材

pipelines.py

from itemadapter import ItemAdapter
import scrapy
from scrapy.pipelines.images import ImagesPipeline


# zz:
class ScrapyDemo1Pipeline(ImagesPipeline):  # 继承
    # 重写父类方法
    def get_media_requests(self, item, info):
        # 向图片url发起请求
        #  meta={"item": item['img_name']}  传递图片的名字.
        yield scrapy.Request(item["img_src"], meta={"item": item["img_name"]})

    # 指定图片的保存名字:
    def file_path(self, request, response=None, info=None, *, item=None):
        img_name = request.meta["item"] + ".jpg"
        return img_name

items.py

# Define here the models for your scraped items
#
# See documentation in:
# https://docs.scrapy.org/en/latest/topics/items.html

import scrapy


class ScrapyDemo1Item(scrapy.Item):  # 类名可以自定义,但是必须继承scrapy.Item

    ## zz
    img_src = scrapy.Field()
    img_name = scrapy.Field()

zz.py

爬虫文件

import scrapy

from scrapy_demo1.items import ScrapyDemo1Item


class ZzSpider(scrapy.Spider):
    name = "zz"
    # allowed_domains = ["zz.com"]
    start_urls = ["https://sc.chinaz.com/tupian/"]

    def parse(self, response):
        # html 数据
        divs = response.xpath('//div[@class="item"]')  # 这个地方不能getall(),对象.
        # print(len(divs))
        for div in divs:
            # 图片地址
            img_src = div.xpath("./img/@data-original").get()
            # 拼接协议
            img_src = "https:" + img_src
            # 图片的名字
            img_name = div.xpath("./img/@alt").get()
            print(img_name, img_src)
            # https://scpic3.chinaz.net/files/default/imgs/2024-07-31/65ae6ef86d4b1a44
            # _s.jpg
            # https://scpic3.chinaz.net/files/default/imgs/2024-07-31/65ae6ef86d4b1a44_s.jpg
            # break

            # # 创建item对象
            item = ScrapyDemo1Item()
            item["img_src"] = img_src
            item["img_name"] = img_name
            yield item

settings.py

# 加入配置:保存图片的路径

TMAGES_STORE = "../scrapy_demo1/images"


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2073369.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

<C++> 二叉树进阶OJ题

目录 1. 二叉树创建字符串 2. 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先 3. 二叉树搜索树转换成排序双向链表 4. 根据一棵树的前序遍历与中序遍历构造二叉树 5. 根据一棵树的中序遍历与后序遍历构造二叉树 6. 二叉树的前序遍历,非递归迭代实现 7. 二…

13.全志H3-底板测试和测试记录

上面是我的微信和QQ群,欢迎新朋友的加入。 前段时间,做了一个H3的双DDR方案,记录一下测试过程。 1.硬件速率检测 1.取掉SD卡,不接调试串口,按住复位按键,上电 设备管理器会弹出USB设备,打开硬…

Python|日志记录详解(1)

引言 作为一名Python程序员,记录程序运行时的关键信息是一种有益的做法,这有助于深入理解你的代码。这种记录行为被称作日志记录,它是一个非常实用的工具,是编程工具箱中不可或缺的一部分。日志记录能够帮助你捕捉到在开发过程中可…

哈里和梅根的批评者似乎并不理解“不可征服运动会”的全球影响力

哈里王子和梅根马克尔的批评者似乎无法理解为什么这对夫妇继续像王室之旅一样环游世界。答案很简单:不可征服运动会。苏塞克斯夫妇通过这项体育赛事获得了成功,它为“国际受伤、受伤和生病的军人和女性提供了康复之路”。各国正在争夺未来运动会的主办权…

Photoshop用户必备:PS全套插件分享(PS插件全家桶)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 PS全套插件 📒🎈 获取方式 🎈⚓️ 相关链接 ⚓️📖 介绍 📖 你是否时常为Photoshop中复杂的操作流程感到困扰,渴望拥有一把钥匙,能瞬间解锁设计效率与创意的新世界?今天,我将给大家分享一款让众多设计师梦寐以求的…

Elasticsearch用法

💥 该系列属于【SpringBoot基础】专栏,如您需查看其他SpringBoot相关文章,请您点击左边的连接 目录 一、初识elasticsearch 1. 安装Elasticsearch和Kibana 2. 倒排索引 3. IK分词器 4. 基础概念 二、索引库操作 1. Mapping映射属性 2…

IM项目:进阶版即时通讯项目---语音识别和验证码服务

文章目录 语音识别基本功能模块划分流程图实现逻辑解析proto文件 验证码服务 本篇主要是对于该项目的语音识别和验证码服务模块的一个梳理,项目会直接使用部分封装好的内容,可以查看前面的文档或在本文档中进行查看和学习 由于这两个模块非常相似&#…

模型 卡茨管理模型

系列文章 分享 模型,了解更多👉 模型_思维模型目录。技术、人际、概念:管理技能三支柱。 1 卡茨管理模型的应用 1.1 产品经理能力模型:基于卡茨管理模型的应用 在现代企业管理中,产品经理的角色越来越受到重视。根据…

HTML简单了解和基础知识记录

参考视频 html的用途 超文本标记语言(英语:HyperText Markup Language,简称:HTML),用来显示网页的文字和框架结构,可以认为是网页的骨架。 标签/元素 用于定义文字图片连接等,分…

超简单Java邮件发送-为你的小程序实现邮箱验证码登录

本项目基于Apache Commons Email for Jakarta开发。 超简单实现邮箱发送,并以此扩展出邮箱验证码功能(请读者扩展实现)。 构建工具:Maven 演示邮箱:outlook 准备 请确保你的邮箱开启了SMTP服务,并获取相关参数,类似…

51单片机——模块化编程

1、模块化编程介绍 传统方式编程:所有的函数均放在main.c里,若使用的模块比较多,则一个文件内会有很多的代码,不利于代码的组织和管理,而且很影响编程者的思路。 模块化编程:把各个模块的代码放在不同的.…

诊断知识:agedDTCLimit的使用

文章目录 前言agedDTCLimit的定义agedDTCLimit的使用图解agedDTCLimit总结 前言 ECU中的存储空间一般无法将所有的DTC同时记录故障数据,所以故障发生之后记录的数据,需要在一段时间后未出现故障则自动清除,以保证新的故障出现时,…

苍穹外卖-day05(SpringBoot+SSM的企业级Java项目实战)

苍穹外卖-day05 课程内容 Redis入门 Redis数据类型 Redis常用命令 在Java中操作Redis 店铺营业状态设置 功能实现:营业状态设置 效果图: 选择营业中,客户可在小程序端下单: 选择打烊中,客户无法在小程序端下单&…

【Docker】Docker学习04 | dockerfile的编写

本文首发于 ❄️慕雪的寒舍 dockerfile是构建docker镜像的基础,它规定了一系列语法,让我们可以在某个基础镜像之上,添加自己需要的操作,打包出一个自己的镜像。 1. dockerfile基本语法 下面是dockerfile的基本语法和其对应的功能…

【算法进阶2-动态规划】斐波那契数列(递归调用、动态规划)、钢条切割问题(自定而下实现、自底向上、切割方案)

1 斐波那契数 2 钢条切割问题 2.1 最优解情况 2.2 钢条切割问题之自定而下实现 2.3 钢条切割问题之自底向上实现 2.4 钢条切割问题-重构解-切割方案 1 斐波那契数 # 1 子问题的重复计算 def fibonacci(n: int) -> int:"""使用递归方式计算第 n 个斐波那契数…

计算机毕业设计选题推荐-法律援助平台-Java/Python项目实战

✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

有限差分学习笔记

有限差分介绍 ​ 在数学中,有限差分法(finite-difference methods,简称FDM),是一种微分方程数值方法,是通过有限差分来近似导数,从而寻求微分方程的近似解。 由泰勒展开式的推导 显式方…

给Go+Sciter开发的桌面客户端软件添加系统托盘图标

在桌面端软件开发中,系统托盘图标是提升用户体验的重要元素。托盘图标不仅能提供直观的状态反馈,还能让软件在后台运行时依然保持与用户的交互。通过托盘图标,用户可以轻松最小化软件、退出程序,甚至弹出通知,从而避免…

【海外EI 会议合集】电网系统/绿色能源/新材料主题均可

第五届电网系统与绿色能源国际学术会议(PGSGE 2025) 2025 5th International Conference on Power Grid Systems and Green Energy 重要信息 会议官网:www.pgsge.org 会议时间:2025年1月10-12日 会议地点:马来西亚…