1
我正在运行Scrapy CrawlSpider从网站下载图像。Scrapy重命名图像
使用管道:
import scrapy
from scrapy.pipelines.images import ImagesPipeline
from PIL import Image
class XPipeline(ImagesPipeline):
def set_filename(self, response):
return 'full/{0}.jpg'.format(response.meta['title'][0])
def get_media_requests(self, item, info):
for image_url in item['image_urls']:
yield scrapy.Request(image_url, meta={'title': item['Sku']})
def get_images(self, response, request, info):
for key, image, buf in super(XPipeline, self).get_images(response, request, info):
key = self.set_filename(response)
yield key, image, buf
这种运作良好,当有每个产品页面只有一个“image_urls”,但是,它往往是一个产品网页可以有多个产品图片的情况。
另外我怎样才能修改管道添加一个整数值修改图像标题?
任何帮助,将不胜感激
它不应该像'meta = {'title':item ['Sku'] + i}''而不是?否则,你在'set_filename'中改变标题键和'response.meta ['title'] [0]'(为什么'[0]')不起作用。 –
@paultrmbrth,啊,我假定海报意思是get_media_requests函数中的'image_urls',但你可能是对的! – paep3nguin