1.ImagesPipeline简介
Scrapy用ImagesPipeline类提供一种方便的方式来下载和存储图片。
特点:
- 将下载图片转换成通用的JPG和RGB格式
- 避免重复下载
- 缩略图生成
- 图片大小过滤
2.ImagesPipeline工作流程
当使用图片管道 ImagePipeline,典型的工作流程如下:
- 在一个爬虫里,你抓取一个项目,把其中图片的URL放入image_urls组内。
- 项目从爬虫内返回,进入项目管道。
- 当项目进入ImagePipeline, image_urls组内的URLs将被Scrapy的调度器和下载器安排下载(这意味着调度器和中间件可以复用),当优先级更高,会在其他页面被抓取前处理. 项目会在这个特定的管道阶段保持"locker"的状态,直到完成图片的下载(或者由于某些原因未完成下载)。
- 当图片下载完, 另一个组(images)将被更新到结构中,这个组将包含一个字典列表,其中包括下载图片的信息,比如下载路径,源抓取地址(从image_urls组获得)和图片的校验码. images列表中的图片顺序将和源image_urls组保持一致.如果某个图片下载失败,将会记录下错误信息,图片也不会出现在images组中。
3.操作过程
项目目录结构:
这里写图片描述
<font size=5>要想成功爬取图片,需要经过以下几个步骤:
(1) 在items.py中添加image_urls、images和image_paths字段,代码如下:
class DoubanImgsItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
image_urls = Field()
images = Field()
image_paths = Field()