美文网首页
scrapy下载图片

scrapy下载图片

作者: 谁占了我的一年的称号 | 来源:发表于2017-04-06 15:19 被阅读164次

    首先看一下爬取的流程:

    在一个爬虫里,你抓取一个项目,把其中图片的 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是用来区分图片和缩略图(如果使用的话)的一个子文件夹。详情参见缩略图生成

    相关文章

      网友评论

          本文标题:scrapy下载图片

          本文链接:https://www.haomeiwen.com/subject/rylqattx.html