[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

点赞
  1. 苏先生说道:

    请问 上传到七牛云中,怎么处理呢

    1. bruce说道:

      参考他们的sdk , https://developer.qiniu.com/kodo/sdk/1242/python ,稍微修改一下代码就OK了

      1. 苏先生说道:

        我试过 按照你这样的修改成 七牛云的,但是一直不行,你能帮我看看怎么写最好吗

        1. bruce说道:

          可以打断点debug的,你可以看下具体问题是啥,不难的

  2. 苏先生说道:

    我还是没能成功执行~~~

    1. bruce说道:

      要学会自己debug啦~

发表评论

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.