zoukankan      html  css  js  c++  java
  • scrapy中的ImagePipeline下载图片到本地、并提取本地的保存地址

    1. 通过scrapy内置到ImagePipeline下载图片到本地
      1. 在settings中打开 ITEM_PIPELINES的注释,并在这里面加入
        'scrapy.pipelines.images.ImagesPipeline':5,
        #后面的数字代表执行优先级 ,当执行pipeine的时候会按照数字由小到大执行
      2. 在settings中加入
        IMAGES_URLS_FIELD ="image_url"  #image_url是在items.py中配置的网络爬取得图片地址
        #配置保存本地的地址
        project_dir=os.path.abspath(os.path.dirname(__file__))  #获取当前爬虫项目的绝对路径
        IMAGES_STORE=os.path.join(project_dir,'images')  #组装新的图片路径
         还有很多设置有特殊需要的话可以用哦 (详情可以去imagepipeine源码查看)
        
           IMAGES_MIN_HEIGHT=100   #设定下载图片的最小高度
        
           IMAGES_MIN_WIDTH=100  #设定下载图片的最小宽度
        1. 可能会报错:

          ModuleNotFoundError: No module named 'PIL'
          1.  这时候安装pip install pillow库就可以了

    2. 获取图片保存本地的地址
      1. 下载图片,如果想获取图片保存本地的地址,那么就需要重写ImagesPipeline,并且在settings中调用重写的pipeline
        #既然要重写,记得提前引入
        from scrapy.pipelines.images import ImagesPipeline
        
        class ArticleImagePipeline(ImagesPipeline):
        # 重载ImagePipeline中的item_completed方法,获取下载地址
        def item_completed(self, results, item, info):
        
          for ok,value in results:   #通过断点可以看到图片路径存在results内
        
            image_file_path=value['path'] #将路径保存在item中返回
        
            item['front_image_path']=image_file_path
          return item
  • 相关阅读:
    使用Modelsim对Nios II系统进行系统级仿真
    电视相关知识学习
    SAD和SATD的区别[摘]
    vim自动补全括号的最好方法
    vim sinppets插件介绍
    在centos下安装开发环境
    初始化以及动态设置Edit控件的背景及字体颜色
    CTreeCtrl SetItemData 释放问题
    C#4.0 新特性 匿名方法,lambds
    对象序列化Serialization与Deserialize方法进行反序列化
  • 原文地址:https://www.cnblogs.com/tulintao/p/11588591.html
Copyright © 2011-2022 走看看