Ha sido un par de años desde la última respuesta, y algunas cosas han cambiado (2015). Nick Verwymeren escribió una publicación en el blog que detalla una versión actualizada de cómo hacer esto. Su entrada en el blog está aquí: https://www.nickv.codes/blog/scrapy-uploading-image-files-to-amazon-s3/
en su archivo settings.py:
ITEM_PIPELINES = {
'scrapy.contrib.pipeline.images.ImagesPipeline': 1
}
# This is going to be the amazon s3 bucket.
# You need to use the below format so Scrapy
# can parse it. !!Important don't forget to add
# the trailing slash.
IMAGES_STORE = 's3://my-bucket-name/'
# The amount of days until we re-download the image
IMAGES_EXPIRES = 180
# You can add as many of these as you want
IMAGES_THUMBS = {
'small': (50, 50),
'big': (300, 300)
}
AWS_ACCESS_KEY_ID = 'your-access-key'
AWS_SECRET_ACCESS_KEY= 'your-secret-access-key'
En aras de la seguridad Sugiero crear un nuevo usuario en la interfaz de Amazon AWS y dar a ese usuario sólo lectura/escribe privilegios en tu cubo.
Ahora tenemos que instalar algunos paquetes que no vienen por defecto con Scrapy:
pip install pillow
pip intall boto
almohada se encarga de la manipulación de imágenes y boto proporcionará la biblioteca que se conecta a S3.
Scrapy utiliza la tecla image_urls en el elemento para buscar las imágenes que debería descargar. Esta debería ser una lista de urls de imágenes. Una vez descargado, Scrapy escribe los detalles de la ubicación de la imagen en la tecla de imágenes.
No se olvide de añadir estos a su archivo items.py:
class MyItem(scrapy.Item):
image_urls = scrapy.Field()
images = scrapy.Field()
Ahora no se olvide de poblarlo la tecla image_urls durante su rastreo. Una vez que rastrear su salida final sitio se verá algo como esto para un determinado artículo:
'image_urls': [u'http://example.com/images/tshirt.jpg'],
'images': [{ 'checksum': '264d3bbdffd4ab3dcb8f234c51329da8',
'path': 'full/069f409fd4cdb02248d726a625fecd8299e6055e.jpg',
'url': 'http://example.com/images/tshirt.jpg'}],
Ahora la cabeza a que Amazon S3 cubo y echar un vistazo. ¡Tus imágenes y miniaturas están todas allí!
De nuevo, muchas gracias a Nick Verwymeren por la publicación del blog que responde esta pregunta con exactitud.
Dirígeme a la página que dicen que es compatible con la carga de S3. No puedo encontrarlo No importa, lo vi ahora. Utilice python-boto para cargar en S3, está completamente documentado. – rantanplan
El pitón-boto acordado es el camino a seguir. –
Gracias chicos, pero estaba preguntando porque ya está implementado en scrapy. –