spider中的代码
def parse(self, response):
li_list=response.xpath('//*[@id="main"]/div/div[1]/ul/li')
i=1
for li in li_list:
if i <4:
src = li.xpath('./a/img/@src').extract_first()
# print(div.xpath('./img/@style').extract())
i += 1
print(src)
item = ImgsproItem()
item['src'] = src
yield item
else:
break
管道类中的代码:
from scrapy.pipelines.images import ImagesPipeline
import scrapy
class imgsPipeline(ImagesPipeline):
print('kkkkk')
# 根据图片地址进行图片数据请求
def get_media_requests(self, item, info):
yield scrapy.Request(item['src'])
# 指定图片储存的路径
def file_path(self, request, response=None, info=None, item=None):
imgname=request.url.split('/')[-1]
print(imgname)
return imgname
# 还会给下一个即将执行的管道类
def item_completed(self, results, item, info):
return item
运行结果:
管道类重写的方法没有执行
在setting中设置:
LOG_LEVEL='WARNING'
然后在运行一下(原来项目运行结果也这样):
显示警告:
WARNING: Disabled imgsPipeline: ImagesPipeline requires installing Pillow 4.0.0 or later
我更新了Pillow模块,然后运行,但还是显示这个
尝试了了好多博主的方法,还是没有解决,然后我就试着创建了新的项目,配置新的虚拟环境
解决办法:
方法一:
我新建了个项目,配置了新的虚拟环境,然后把这个项目在新环境中打开显示的还有那个警告
然后我试着把Pillow卸载重装,运行没报错了
方法二:
直接在命令行使用命令:
python -m pip install --upgrade scrapy
更新scrapy也能正常运行: