scrapy的MediaPipeline一般会使用FilePipeline和ImagesPipeline,都具有一下特征:
避免重新下载最近已经下载过的数据
指定储存的位置和方式
ImagesPipeline还提供了一下额外特性:
将所有下载的图片转换成通用的格式和模式
生成缩略图
检测图像的宽/高,确保他们满足最小限制
使用FilePipeline时,典型的工作流程:
1.在一个爬虫里,抓取一个item,把其中文件的URL放入file_urls内
2.item从爬虫内返回,进入Item Pipeline
3.进入后file_urls内的URL将被scrapy的调度器和下载器安排下载。
使用Images Pipeline时的工作流程是大同小异的。
使用File Pipeline:
settings中ITEM_PIPELINE中设置'scrapy.pipelines.files.FilePipeline':1
item中添加两个字段:
file_urls = scrapy.Field()
files = scrapy.Field()
settings中添加下载路径FILES_STORE、文件url所在的item字段、和文件结果信息的item字段FILE_RESULT_FIELD
FILES_STORE = 'D:\\file_path&