Scrapy实战-下载豆瓣图书封面

字数 378阅读 479

紧接着再识Scrapy-爬取豆瓣图书,我们打算把每一本图书的封面都爬下来,毕竟下载图片是一件很棒的事。可以凭借这招去搜集各种表情包呢,还可以省了在某榴辛辛苦苦一个一个打开网页的烦恼呢。
根据官方文档,下载图片其实pipeline.py的额外工作而已,大致分为以下几步

  1. 在Spider中,额外定义一个image_urls用来存放图片链接的 item;
  2. 这个item会从spider中传递到pipeline中
  3. 在这个item到了ImagesPipeline后,里面的url经由scheduler插队到downloader进行下载
  4. 下载完成后,Scrapy会新建一个files字段用于存放结果。
  5. 需要额外安装PIL保证正常工作。

使用方法

  1. 在settings.py的ITEM_PIPELINES中加入
    'scrapy.pipelines.images.ImagesPipeline':1,

  2. 在items.py中建立相应的item.
    import scrapy
    class MyItem(scrapy.Item):
    # ... 其他字段 ...
    image_urls = scrapy.Field()
    images = scrapy.Field()

  3. 在settings.py中添加图片存放目录,如
    IMAGES_STORE = 'G:/images'

  4. (非必须)假设你觉得image_urls和images不够霸气,想换个名字,如douban_urls,douban你可以在settings.py中增加如下字段,用来声明新的字段:
    IMAGES_URLS_FIELD = ‘douban_urls'
    IMAGES_RESULT_FIELD = 'douban'

文件命名格式为:下载图片url的SHA1 hash值,不喜欢的话可以看这里进行深入研究,反正我就看图,凑合用了。

推荐阅读更多精彩内容