Scrapy爬取图片
简介
Scrapy用ImagesPipeline类提供一种方便的方式来下载和存储图片,包括以下要点
- 需要PIL库支持
- 将下载图片转换成通用的JPG和RGB格式
- 避免重复下载
- 缩略图生成
- 图片大小过滤
前面已经介绍过scrapy的流程,这里主要分为以下几步:
- 在spider中爬取一个Item,将图片的URLs放入
image_urls
字段 - 在pipeline中重载
get_media_requests
和item_completed
函数调用Scrapy 调度器和下载器完成urls包含图片的下载 - 下载成功结束后,图片下载路径、url和校验和等信息会被填充到
images
字段中
爬取代码
- 在spider.py中
1 | import scrapy |
- 在items.py中配置字段
1 | class DoubanImageItem(scrapy.Item): |
- 主要任务放在了pipelines.py中
1 | from scrapy.pipelines.images import ImagesPipeline |
- 在settings.py中加入配置
1 | ITEM_PIPELINES = { |
可以发现,大部分的细节实现scrapy已经封装好了,这更像是一个调用模板,我们只需要根据自己的要求做一些配置即可!
如果你没有运行成功这些代码,可能是网络的问题,或者是反爬机制的问题,亦可能是框架的更新!由于反爬技术的升级,如果你想爬取自己喜欢的数据还是需要花很多功夫的。