图片管道 ImagePipeLine

需要从新写两个方法

保存图片别忘了在设置中设置图片保存的位置 IMAGES_STORE = “xxx”

  1. def get_media_requests(self, item, info):
  2. pass
  3. def item_completed(self, results, item, info):
  4. return item
  5. # results 数据类型
  6. [(True,
  7. {'url': 'https://image1.ljcdn.com/110000-inspection/pc1_Kz21DStHD_1.jpg.296x216.jpg',
  8. 'path': 'full/4495a2b603444ec1ed1c2451c690d814fbb33afb.jpg',
  9. 'checksum': '3400355050afbbc17602f061ba1adba7'})]
  1. import scrapy
  2. from scrapy.utils.project import get_project_settings # 获取设置的内容
  3. import os
  4. from scrapy.pipelines.images import ImagesPipeline
  5. image_store = get_project_settings.get("IMAGES_STORE")
  6. class ImagePipeline(ImagesPipeline):
  7. def __ init__(self):
  8. # 定义初始化内容
  9. def get_media_requests(self, item, info):
  10. for url in item["image_urls]:
  11. yiled scrapy.Request(url)
  12. # 或者
  13. yiled scrapy.Request([ url for url in item["image_urls"]])
  14. # 或者
  15. url = item["iomage_url]
  16. yiled scrapy.Request(url)
  17. def item_completed(self, results, item, info):
  18. image_path = [x['path'] for status,x in results if status]
  19. os.rename(image_store+image[0],image_store+item['name']+".jpg")
  20. image_path = images_store+itme["name"] + ".jpg"
  21. imte['iamge_paths'] = image_store
  22. return item

注意:
setting中要配置图片的保存的位置
需要重写两个方法 可以自定义保存的路径
导入包 ImagePipeline get_project_setting
from scrapy.pipeline.image import ImagePipeline
from scrapy.utils.project import get_project_setting