博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
scrapy中的ImagePipeline下载图片到本地、并提取本地的保存地址
阅读量:4451 次
发布时间:2019-06-07

本文共 1053 字,大约阅读时间需要 3 分钟。

  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 ImagesPipelineclass 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

       

转载于:https://www.cnblogs.com/tulintao/p/11588591.html

你可能感兴趣的文章
JAVA优化建议
查看>>
Docker --- 安装MySQL
查看>>
CenOS+宝塔(模拟)上线博客项目
查看>>
Linux改变语言设置的命令
查看>>
loadrunner Vugen-Tools General-Options-Replay设置
查看>>
redis限频
查看>>
Floyd判圈算法
查看>>
接口,lambda表达式与内部类(二)
查看>>
Phabricator是什么,代码审查工具
查看>>
Java虚拟机类加载机制
查看>>
UITextView,UIWebView 直接显示html代码
查看>>
DirectX:函数可以连接任意两个filter 分类: Direct...
查看>>
Android APP开发入门教程-Button 分类: JAVA ...
查看>>
WustOJ 1575 Gingers and Mints(快速幂 + dfs )
查看>>
js中,for循环里面放ajax,ajax访问不到变量以及每次循环获取不到数据问题总结...
查看>>
算法:求从1到n这n个整数的十进制表示中1出现的次数-- python 实现
查看>>
CSU 1160 把十进制整数转换为十六进制,格式为0x开头,10~15由大写字母A~F表示
查看>>
LintCode 58: Compare Strings
查看>>
[Unity插件]Lua行为树(五):装饰节点Repeater
查看>>
顺序表、链表、栈和队列
查看>>