scrapy下载图片

首先看一下爬取的流程:

在一个爬虫里,你抓取一个项目,把其中图片的 URL 放入“image_urls”组内。项目从爬虫内返回,进入项目管道。

当项目进入ImagesPipeline,image_urls组内的 URLS 将被 Scrapy 的调度器和下载器(这意味着调度器和下载器的中间件可以复用)安排下载,当优先级更高,会在其他页面被抓取前处理。项目会在这个特定的管道阶段保持“locker”的状态,直到完成图片的下载(或者由于某些原因未完成下载)。

当图片下载完,另一个组(images)将被更新到结构中。这个组将包含一个字典列表,其中包括下载图片的信息,比如下载路径、源抓取地址(从image_urls组获得)和图片的校验码。images列表中的图片顺序将和源image_urls组保持一致。如果某个图片下载失败,将会记录下错误信息,图片也不会出现在images组中。


下载图片的item

为了开启你的图片管道,你首先需要在setting中添加它ITEM_PIPELINES setting:

ITEM_PIPELINES = {'scrapy.contrib.pipeline.images.ImagesPipeline': 1}

并将IMAGES_STORE设置为一个有效的文件夹,用来存储下载的图片。否则管道将保持禁用状态,即使你在ITEM_PIPELINES设置中添加了它。比如:

IMAGES_STORE='d:/meizitu'

图片存储在文件中(一个图片一个文件),并使用它们 URL 的SHA1 hash作为文件名。

比如,对下面的图片 URL:

http://www.example.com/image.jpg

它的 SHA1 hash 值为:

3afec3b4765f8f0a07b78f98c07b83f013567a0a

将被下载并存为下面的文件:

/full/3afec3b4765f8f0a07b78f98c07b83f013567a0a.jpg

其中:

是定义在IMAGES_STORE设置里的文件夹

full是用来区分图片和缩略图(如果使用的话)的一个子文件夹。详情参见缩略图生成

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容