使用自定义scrapy imagePipeline下载图像并覆盖现有图像

时间:2014-09-04 06:13:07

标签: python scrapy

我正在练习使用scrapy来使用自定义imagePipeline裁剪图像。 我正在使用此code

class MyImagesPipeline(ImagesPipeline):

def get_media_requests(self, item, info):
    for image_url in item['image_urls']:
        yield Request(image_url)

def convert_image(self, image, size=None):
    if image.format == 'PNG' and image.mode == 'RGBA':
        background = Image.new('RGBA', image.size, (255, 255, 255))
        background.paste(image, image)
        image = background.convert('RGB')
    elif image.mode != 'RGB':
        image = image.convert('RGB')

    if size:
        image = image.copy()
        image.thumbnail(size, Image.ANTIALIAS)
    else:
        #  cut water image  TODO use defined image replace Not cut 
        x,y = image.size
        if(y>120):
            image = image.crop((0,0,x,y-25))

    buf = StringIO()
    try:
        image.save(buf, 'JPEG')
    except Exception, ex:
        raise ImageException("Cannot process image. Error: %s" % ex)

    return image, buf

效果很好,但有问题 如果文件夹中有原始图像, 然后运行蜘蛛,
它下载的图像不会取代原来的图像。

如何让它覆盖原始图像?

1 个答案:

答案 0 :(得分:1)

expiration setting,默认为90天。