当前位置: 首页 > article >正文

scrapy--图片管道-ImagesPipeline

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

目录

介绍

 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.kler.cn/a/282212.html

相关文章:

  • Django5 2024全栈开发指南(一):框架简介、环境搭建与项目结构
  • 2024山西省网络建设运维第十八届职业院校技能大赛解析答案(3. ansible 服务)
  • [241115] Debian 12.8 发布 | Mistral AI 推出批量 API,成本降低 50%
  • ASP.NET 部署到IIS,访问其它服务器的共享文件 密码设定
  • 3D意识(3D Awareness)浅析
  • 微信小程序设置屏幕安全距离
  • 第十五章、 Io流
  • 风控领域特征工程
  • 力扣: 移除链表元素
  • 2017年系统架构师案例分析试题一
  • 使用C++,仿照string类,实现myString
  • 符合开闭原则的设计模式
  • 如何使用 Qt C++ 基于 FFmpeg 开发本地视频播放器
  • Kafka·Producer
  • 通过历史进行数据预测的算法
  • 云计算实训39——部署Harbor、部署Docker-compose、YAML文件
  • Win11 操作(七)声音降噪
  • 【JVM】亿级流量调优(一)
  • Git Submodule 常用命令详解
  • 前端实现截图(Vue)
  • uniapp + Vue3自定义封装弹窗组件
  • Kubectl常用命令
  • 深度强化学习算法(三)(附带MATLAB程序)
  • Python酷库之旅-第三方库Pandas(105)
  • 2012-2022年各省新质生产力匹配数字经济数据
  • 通过 pnpm 安装依赖包会发生什么