紧接着再识Scrapy-爬取豆瓣图书,我们打算把每一本图书的封面都爬下来,毕竟下载图片是一件很棒的事。可以凭借这招去搜集各种表情包呢,还可以省了在某榴辛辛苦苦一个一个打开网页的烦恼呢。
根据官方文档,下载图片其实pipeline.py的额外工作而已,大致分为以下几步
- 在Spider中,额外定义一个image_urls用来存放图片链接的 item;
- 这个item会从spider中传递到pipeline中
- 在这个item到了ImagesPipeline后,里面的url经由scheduler插队到downloader进行下载
- 下载完成后,Scrapy会新建一个files字段用于存放结果。
- 需要额外安装PIL保证正常工作。
使用方法
在settings.py的ITEM_PIPELINES中加入
'scrapy.pipelines.images.ImagesPipeline':1,在items.py中建立相应的item.
import scrapy
class MyItem(scrapy.Item):
# ... 其他字段 ...
image_urls = scrapy.Field()
images = scrapy.Field()在settings.py中添加图片存放目录,如
IMAGES_STORE = 'G:/images'(非必须)假设你觉得image_urls和images不够霸气,想换个名字,如douban_urls,douban你可以在settings.py中增加如下字段,用来声明新的字段:
IMAGES_URLS_FIELD = ‘douban_urls'
IMAGES_RESULT_FIELD = 'douban'
文件命名格式为:下载图片url的SHA1 hash值,不喜欢的话可以看这里进行深入研究,反正我就看图,凑合用了。