Scrapy图片数据爬取-基于文件下载的管道类

  • 在scrapy中我们之前爬取的都是基于字符串类型的数据,那么要是基于图片数据的爬取,那又该如何呢?
    • 其实在scrapy中已经为我们封装好了一个专门基于图片请求和持久化存储的管道类ImagesPipeline,那也就是说如果想要基于scrapy实现图片数据的爬取,则可以直接使用该管道类即可。
  • ImagesPipeline使用流程

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

from scrapy.pipelines.images importImagesPipeline
import scrapy
class ImgproPipeline(object):
  item =None
  def process_item(self, item, spider):
    # print(item)
    return item
    #ImagesPipeline专门用于文件下载的管道类,下载过程支持异步和多线程
class ImgPipeLine(ImagesPipeline):
  #对item中的图片进行请求操作
  def get_media_requests(self, item, info):
    yield scrapy.Request(item['src'])
    #定制图片的名称
  def file_path(self, request, response=None, info=None):
    url = request.url
    file_name = url.split('/')[-1]
    return file_name
  def item_completed(self, results, item, info):
    return item #该返回值会传递给下一个即将被执行的管道类
posted @ 2020-04-06 18:19  y0um  阅读(387)  评论(0)    收藏  举报

新人优惠服务器