Scrapy框架(六)--图片数据抓取

基于文件下载的管道类

在scrapy中我们之前爬取的都是基于字符串类型的数据,那么要是基于图片数据的爬取,那又该如何呢?

其实在scrapy中已经为我们封装好了一个专门基于图片请求和持久化存储的管道类ImagesPipeline,

那也就是说如果想要基于scrapy实现图片数据的爬取,则可以直接使用该管道类即可。

ImagesPipeline使用流程

1.在配置文件中进行如下配置:
  IMAGES_STORE = ‘./imgs’:表示最终图片存储的目录

2.管道类编写

# ImagesPipeline专门用于文件下载的管道类,下载过程支持异步和多线程
class imagesPipeline(ImagesPipeline):
    # 向指定url发送请求
    def get_media_requests(self, item, info):
        yield scrapy.Request(item['src'])

    # 定制文件名称   存储路径在settings指定
    def file_path(self, request, response=None, info=None):
        imgName = request.url.split('/')[-1]

        return imgName

    # 将item提交给下一个将要执行的管道
    def item_completed(self, results, item, info):
        return item
原文地址:https://www.cnblogs.com/sxy-blog/p/13215850.html