我一直在使用Scrapy大約1周,並且想要將圖像存儲到亞馬遜S3,並且他們提到他們支持將圖像上傳到亞馬遜S3,但它沒有記錄。那麼有誰知道如何在Scrapy上使用Amazon S3?如何在Amazon S3上存儲scrapy圖像?
這是他們的Scrapy文檔media pipeline。
我一直在使用Scrapy大約1周,並且想要將圖像存儲到亞馬遜S3,並且他們提到他們支持將圖像上傳到亞馬遜S3,但它沒有記錄。那麼有誰知道如何在Scrapy上使用Amazon S3?如何在Amazon S3上存儲scrapy圖像?
這是他們的Scrapy文檔media pipeline。
您需要3個設置:
AWS_ACCESS_KEY_ID = "xxxxxx"
AWS_SECRET_ACCESS_KEY = "xxxxxx"
IMAGES_STORE = "s3://bucketname/base-key-dir-if-any/"
這一切,即。圖像將使用結構化的http://readthedocs.org/docs/scrapy/en/latest/topics/images.html#file-system-storage描述相同的目錄,即存放:
s3://bucketname/base-key-dir-if-any/full/3afec3b4765f8f0a07b78f98c07b83f013567a0a.jpg
我剛試過,並得到這個錯誤「沒有模塊名爲boto.s3.connection」.....只是嘗試easy_install boto,它現在工作正常:)謝謝 –
從8/8/12 v .14.4 - s3圖像存儲實施中存在一些問題,可能導致您的抓取工具無法響應^ c,需要kill -9才能結束。快速瀏覽代碼使我懷疑s3映像存儲代碼的延遲方式存在問題。 – Ted
@dangra我試圖讓這個工作,但不能(圖像不上傳到S3)。我給自己定: 'AWS_ACCESS_KEY_ID = 「XXX」 AWS_SECRET_ACCESS_KEY = 「XXX」 IMAGES_STORE = 「http://s3-eu-west-1.amazonaws.com/[bucketname]」' Scrapy不似乎有任何錯誤。我也安裝boto。 我可能會錯過什麼? – 2083
它已經從上次的答案几年,有些事情發生了變化(2015年)。 Nick Verwymeren寫了一篇博客文章,詳細介紹瞭如何做到這一點的更新版本。他的博客是在這裏:https://www.nickv.codes/blog/scrapy-uploading-image-files-to-amazon-s3/
在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'
爲了安全起見,我建議建立在亞馬遜AWS接口的新用戶着想,讓用戶只讀/將權限寫入您的存儲桶。
現在,我們需要安裝沒有與Scrapy來默認了幾包:
pip install pillow
pip intall boto
枕頭處理圖像處理和博託將提供連接到S3庫。
Scrapy在您的項目中使用image_urls鍵來查找它應該下載的圖像。這應該是一個圖像網址列表。下載完成後,Scrapy會將圖像位置的詳細信息寫入圖像鍵。
不要忘記這些添加到您的items.py文件:
class MyItem(scrapy.Item):
image_urls = scrapy.Field()
images = scrapy.Field()
現在不要忘記真正填充你的爬行過程中image_urls關鍵。一旦你抓取你的網站最終輸出將是這個樣子某個商品:
'image_urls': [u'http://example.com/images/tshirt.jpg'],
'images': [{ 'checksum': '264d3bbdffd4ab3dcb8f234c51329da8',
'path': 'full/069f409fd4cdb02248d726a625fecd8299e6055e.jpg',
'url': 'http://example.com/images/tshirt.jpg'}],
現在頭就交給你Amazon S3的桶,看一看。你的圖像和縮略圖都在那裏!
再一次,非常感謝Nick Verwymeren的博客文章,完全回答了這個問題!
@ 2083 我遇到了同樣的問題。沒有錯誤和boto已經安裝。 你可以在這裏找到答案:https://doc.scrapy.org/en/latest/topics/feed-exports.html#topics-feed-storage-s3 「Scrapy支持boto只在Python 2上」 我想你正在使用像我這樣的Python 3。然後,我安裝了botocore。它的工作!
將我指向他們說支持上傳到S3的頁面。我找不到它。沒關係,我現在看到了。使用python-boto上傳到S3,它有完整的文檔。 – rantanplan
約定python-boto是要走的路。 –
感謝球員,但我問的原因它已經在scrapy中實施。 –