加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

scrapy中的ImagePipeline下载图片到本地、并提取本地的保存地址

发布时间:2020-12-20 10:30:39 所属栏目:Python 来源:网络整理
导读:通过scrapy内置到ImagePipeline下载图片到本地 在settings中打开?ITEM_PIPELINES的注释,并在这里面加入 ‘ scrapy.pipelines.images.ImagesPipeline ‘ :5, # 后面的数字代表执行优先级 ,当执行pipeine的时候会按照数字由小到大执行 在settings中加入 IMAG
  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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读