#pipelines代码
# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html
# useful for handling different item types with a single interface
import scrapy
from scrapy.pipelines.images import ImagesPipeline
class SoimgPipeline(ImagesPipeline):
#重写,将图片连接交给调度器
def get_media_requests(self, item, info):
print(item['img_url'])
yield scrapy.Request(url=item['img_url'],meta={'item':item})
def file_path(self, request, response=None, info=None, *, item=None):
title=request.meta['item']['title']
label=request.meta['item']['label']
# return f'{label}/{title}.jpg'
return f'{title}.jpg'
```python
def item_completed(self, results, item, info):
# 图片下载完成后,返回的结果results
print(results)
return item
#settings
ITEM_PIPELINES = {
'SoImg.pipelines.SoimgPipeline': 300,
}
#指定图片保存路径
IMAGES_STORE='.\images'
管道可以调用,但是重写的方法不行
要加
def __init__