关于scrapy无法下载图片 pipeline不执行 解决办法 记一次大坑
出现的问题点:scrapy运行正常,pipeline管道经过测试是没有运行的。判断已经主要是并没有创建设置的IMAGES_STORE
提前指出解决的办法,主要是没有依赖处理图片的第三库pillow
pip install -i https://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com pillow
经历过程及背景
首先是最近电脑刚重装系统,python环境也是重装了。所以一些第三方库会有缺失.起初是对运行环境有疑虑的,但是具体的不确定,所以折腾了很久(大概一个星期)也没结果。主要也是对scrapy的运行结果不了解。
一些尝试
首先应该要注意的是当然是代码部分,反复查看百度搜索到的博客文档,结果是千篇一律。主要是有两种方法:1.是使用原始的ImagesPipeline
(简便,图片名称是HASH值)。2.是修改ImagesPipeline
类的file_path
方法,就可以修改图片名称。这两种方法都是相对固定的可以直接照抄复制,只要修改设置相关的IMAGES_STORE
(设置路径,文件会自动创建)与ITEM_PIPELINES
= {‘scrapy.contrib.pipeline.images.ImagesPipeline’: 1}(打开ITEM_PIPELINES并设置成),以及编写spider
好的解析即可。还是十分的简单,当然也要搞清楚这些设置的含义。
进一步研究
上面的方法尝试N次,说明问题并不出在代码及相关的设置。于是需要加深自己的理解,寻找新的解决方法。期间也有继续重新观看之间的视频确认自己的代码是否有遗漏。
最后不得已,还是老实的查看官方文档吧。scrapy官方中文0.24.6
里面的讲的流程也是比较简单,但是不方便理解。跟一些博客的写法是相关的,都是依据这个来的。不过里面多了一个缩略图和过滤图片。而恰恰问题就出在了这里,因为这些处理是要依赖pillow
第三方库的,当时并没有在意!!!
学习scrapy下载图片文档
最后的最后分析尝试(倔强.gif)
其实也是大概清楚的可能是环境问题(毕竟重装了环境)。看来官方文档也看来去试着去看了源码。对这些相关的运行流程、设置有了具体的很深的理解(好处、过程特别痛苦)。其实最后想想最应该查看的是scrpy的运行日志,里面包含了完整的运行过程。只是真的很难看懂,都是惨白的英文。但是就是这样才找到了问题的所在,对 就是pillow导致的![官方文档指出的,其它教程并未发现
这是卸载没安装的pillow的日志
总结一下
经过上边种种的尝试还是感觉十分的奔溃的,因为不太具体的清楚知道问题所在,也不方便处理。不过整体的过程下来经历查文档、日志不断的调试改进代码并分析,对于scrapy有根深的理解。
后续也会继续编写scrapy安装使用相关的教程,为的是加深理解。