ImagesPipeline是scrapy自带的类,用来处理图片(爬取时将图片下载到本地)用的。
实现功能:
- 将下载图片转换成通用的JPG和RGB格式
- 避免重复下载
- 缩略图生成
- 图片大小过滤
工作流程:
- 爬取一个Item,将图片的URLs放入
image_urls
字段 - 从
Spider
返回的Item,传递到Item Pipeline
- 当
Item
传递到ImagePipeline
,将调用Scrapy 调度器和下载器完成image_urls
中的url的调度和下载。 - 图片下载成功结束后,图片下载路径、url和校验和等信息会被填充到images字段中。
实现方式:
1、自定义pipeline,优势在于可以重写ImagePipeline类中的实现方法;
2、直接使用ImagePipeline类,简单但不够灵活;
具体使用哪种方式,视情况而定。
方法一:
item.py文件:定义item字段
import scrapy
class PicPhotoPeopleItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
# 存放url的下载地址
image_urls = scrapy.Field()
# 图片下载路径、url和校验码等信息(图片全部下载完成后将信息保存在images中)