首页 > 其他分享 >scrapy--图片管道-ImagesPipeline

scrapy--图片管道-ImagesPipeline

时间:2024-08-25 19:24:57浏览次数:10  
标签:src ImagesPipeline name img -- py item scrapy

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

目录

介绍

 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"


 

标签:src,ImagesPipeline,name,img,--,py,item,scrapy
From: https://blog.csdn.net/2303_80857229/article/details/141533279

相关文章

  • scrapy--解析HTML结构数据
    免责声明:本文仅做演示分享...目录拿一页:qczj.py拿多页: 构建start_urls自动发请求手动发请求详情页数据解析:总结写法:汽车之家数据--用scrapy自带的xpath进行数据解析拿一页:qczj.pydefparse(self,response):#pass#print(res......
  • redis操作
    ``1、string—Strings使用场景:计数器setnameqiyegetnamekeys*查看所有的KEYappappendname1jack2getnameappendnamejackgetnamedelname删除设置多个msetname1jack1name2jack2查看多个mgetname1name2自加:incr自减:decr加:incrby......
  • C语言:函数递归
    目录一、递归1.1递归的思想1.2递归的限制二、递归举例2.1举例1:求n的阶乘 画图推演2.2举例2:顺序打印一个整数的每一位画图推演​编辑  三、递归和迭代一、递归   递归是学习C语言函数绕不开的⼀个话题,那什么是递归呢?递归其实是⼀种解决问题的方法,在C语......
  • 自适应seo高仿草民电影网源码 苹果cmsv10模板
    自适应seo高仿草民电影网源码 苹果cmsv10模板源码介绍自适应SEO高仿草民电影网源码是一款基于苹果CMSv10开发的模板,旨在为用户提供一个高度仿真的草民电影网站体验。该模板不仅在视觉设计上模仿了草民电影网的布局和风格,还特别优化了搜索引擎优化(SEO)功能,以提高网站在搜索引......
  • 影视网站模板源码-响应式网页模板-带后台自适应整站源码
    影视网站模板源码-响应式网页模板-带后台自适应整站源码影视网站模板源码源码介绍本源码是一个响应式影视网站模板,适用于搭建电影、电视剧、动漫等视频内容的在线观看平台。模板采用HTML5、CSS3和JavaScript开发,支持自适应布局,能够在不同设备上提供良好的用户体验。后台管理......
  • 【面试系列】30个常见的初级SQL编程题
    欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏:工......
  • 【面试系列】大数据平台常见面试题解答
    欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏:工......
  • 19 OptionMenu 组件
    OptionMenu组件使用指南Tkinter的OptionMenu组件是一个下拉选择框,允许用户从一组预定义的选项中选择一个。它通常用于提供用户一个有限的选项集合来选择。以下是对OptionMenu组件的详细说明和一个使用案例。OptionMenu组件属性variable:与OptionMenu组件关联的......
  • 莫队
    普通版前言莫队是由集训队大佬莫涛提出来的,在此再次膜拜大佬!思想普通莫队主要用于离线的区间查询操作,当然,也不是所有的都适用,当一个区间\([l,r]\)的答案可以用\(O(1)\)的时间转化成\([l+1,r],[l-1,r],[l,r+1],[l,r-1]\)的答案,我们就可以考虑使用莫队。具体怎么做呢?其实......
  • tarjan求LCA
    题面如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。思路这次我们要使用的知识点是\(dfs\)和并查集,这个\(tarjan\)是离线的,我们要先把每个点的每一个要跟它求\(LCA\)的点给记录下来,接下来用\(dfs\)跑这么个流程:遍历这个点的每个子结点并进入子节点将子......