E 'stato un paio di anni dopo l'ultima risposta, e alcune cose sono cambiate (2015). Nick Verwymeren ha scritto un post sul blog con una versione aggiornata di come farlo. Il suo post sul blog è qui: https://www.nickv.codes/blog/scrapy-uploading-image-files-to-amazon-s3/
nel file 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'
Per motivi di sicurezza suggerisco di creare un nuovo utente nell'interfaccia Amazon AWS e dare quell'utente sola lettura/Scrivi i privilegi sul tuo secchio.
Ora abbiamo bisogno di installare alcuni pacchetti che non vengono di default con Scrapy:
pip install pillow
pip intall boto
Pillow gestisce la manipolazione delle immagini e boto fornirà la libreria che si connette a S3.
Scrapy utilizza la chiave image_urls nell'elemento per cercare le immagini che deve essere scaricata. Questo dovrebbe essere un elenco di URL di immagini. Una volta scaricato Scrapy scrive i dettagli della posizione dell'immagine sul tasto immagini.
Non dimenticate di aggiungere questi al file items.py:
class MyItem(scrapy.Item):
image_urls = scrapy.Field()
images = scrapy.Field()
Ora non dimenticare di compilare in realtà la chiave image_urls durante il crawl. Una volta che la scansione del sito output finale sarà simile a questo per un determinato elemento:
'image_urls': [u'http://example.com/images/tshirt.jpg'],
'images': [{ 'checksum': '264d3bbdffd4ab3dcb8f234c51329da8',
'path': 'full/069f409fd4cdb02248d726a625fecd8299e6055e.jpg',
'url': 'http://example.com/images/tshirt.jpg'}],
Ora la testa su oltre a voi Amazon S3 secchio e dare un'occhiata. Le tue immagini e le tue miniature sono tutte lì!
Ancora una volta, un grande ringraziamento a Nick Verwymeren per il post sul blog che risponde esattamente a questa domanda!
Indicami la pagina in cui dicono che il supporto sta caricando su S3. Non riesco a trovarlo Non importa, l'ho visto ora. Usa python-boto per il caricamento su S3, è completamente documentato. – rantanplan
Python-boto concordato è la strada da percorrere. –
Grazie ragazzi, ma stavo chiedendo la causa E 'già implementato in scrapy. –