[scrapy] images pipeline分析– 下载图片如何上传到阿里云服务

目录

  • 源起
  • 准备
  • 分析
  • 实践
  • 总结

源起

现在网上已经有很多方便的云存储了,比如阿里云的oss,亚马逊的s3 ,Azure 的blob,云的储存对于大数据量的文件或者图片来说,绝对是相当的方便,现在我们就来分析一下,如何使用scrapy的pipeline ,将我们下载图片直接上传到我们的阿里云oss服务

代码地址

背景知识

准备

  • python: 2.7
  • 依赖库
    • Scrapy==1.5.0
    • oss2==2.4.0
    • Pillow==5.1.0

分析

拿到一个现有的需求,我们可以参考现有的项目里面是否已经有实现过的代码做为思路,我们知道,scrapy项目一直有对s3(亚马逊的云存储的支持),可以我们可以直接去scrapy的源代码里面去找

通过ImagesPipeline 我们发现在实例化类的时候会初使化一个s3store的对象

https://github.com/scrapy/scrapy/blob/master/scrapy/pipelines/images.py
《[scrapy] images pipeline分析– 下载图片如何上传到阿里云服务》

ImagesPipeline继承自FilesPipeline,我们进一步查找

《[scrapy] images pipeline分析– 下载图片如何上传到阿里云服务》

进一步查找这个s3 store 类是怎么实现的
《[scrapy] images pipeline分析– 下载图片如何上传到阿里云服务》

OK,我们分析完了源码,基本得出结论:只要照样子实现这个alioss store 就可以存储到我们的云服务了

实践

由于我们是直接上传到oss目录,所以完全不用使用到缩略图片的功能

alioss store 构建

pipeline的构建

在settings.py 文件中配置我们的oss

以上节点配置请参考阿里云的oss sdk 文档

效果图

《[scrapy] images pipeline分析– 下载图片如何上传到阿里云服务》

总结

我们这次主要解决了scrapy使用ImagesPipeline 下载图片,并上传到我们云服务的过程,我们的思维过程是

拿到一个需求,我们可以先参考现有的逻辑和工程代码,不要怕,总会有解决方案的,要自己多看源代码。
本次的代码已经上传到git上了,欢迎star或者fork

代码地址: https://github.com/BruceDone/scrapy_demo/tree/master/douban_oss

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注