图片管道 ImagePipeLine
需要从新写两个方法
保存图片别忘了在设置中设置图片保存的位置 IMAGES_STORE = “xxx”
def get_media_requests(self, item, info):
pass
def item_completed(self, results, item, info):
return item
# results 数据类型
[(True,
{'url': 'https://image1.ljcdn.com/110000-inspection/pc1_Kz21DStHD_1.jpg.296x216.jpg',
'path': 'full/4495a2b603444ec1ed1c2451c690d814fbb33afb.jpg',
'checksum': '3400355050afbbc17602f061ba1adba7'})]
import scrapy
from scrapy.utils.project import get_project_settings # 获取设置的内容
import os
from scrapy.pipelines.images import ImagesPipeline
image_store = get_project_settings.get("IMAGES_STORE")
class ImagePipeline(ImagesPipeline):
def __ init__(self):
# 定义初始化内容
def get_media_requests(self, item, info):
for url in item["image_urls]:
yiled scrapy.Request(url)
# 或者
yiled scrapy.Request([ url for url in item["image_urls"]])
# 或者
url = item["iomage_url]
yiled scrapy.Request(url)
def item_completed(self, results, item, info):
image_path = [x['path'] for status,x in results if status]
os.rename(image_store+image[0],image_store+item['name']+".jpg")
image_path = images_store+itme["name"] + ".jpg"
imte['iamge_paths'] = image_store
return item
注意:
setting中要配置图片的保存的位置
需要重写两个方法 可以自定义保存的路径
导入包 ImagePipeline get_project_setting
from scrapy.pipeline.image import ImagePipeline
from scrapy.utils.project import get_project_setting