Nó đã được một vài năm kể từ khi câu trả lời cuối cùng, và một số thứ đã thay đổi (2015). Nick Verwymeren đã viết một bài đăng trên blog chi tiết một phiên bản cập nhật về cách thực hiện việc này. bài viết trên blog của ông là ở đây: https://www.nickv.codes/blog/scrapy-uploading-image-files-to-amazon-s3/
trong tập tin settings.py của bạn:
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'
Vì lợi ích của an ninh tôi khuyên bạn nên tạo một người dùng mới trong giao diện của Amazon AWS và cung cấp cho người dùng mà chỉ đọc/viết đặc quyền cho nhóm của bạn.
Bây giờ chúng ta cần phải cài đặt một vài gói mà không đi theo mặc định với Scrapy:
pip install pillow
pip intall boto
Gối xử lý các thao tác hình ảnh và boto sẽ cung cấp các thư viện kết nối với S3.
Phế liệu sử dụng khóa image_urls trong mục của bạn để tìm kiếm hình ảnh cần tải xuống. Đây phải là danh sách các url hình ảnh. Sau khi tải xuống Scrapy ghi chi tiết của hình ảnh locaiton vào phím hình ảnh.
Đừng quên thêm chúng vào tập tin items.py của bạn:
class MyItem(scrapy.Item):
image_urls = scrapy.Field()
images = scrapy.Field()
Bây giờ đừng quên để thực sự cư phím image_urls trong crawl của bạn. Khi bạn thu thập dữ liệu đầu ra cuối cùng của trang web của mình sẽ trông giống như thế này cho một mục nhất định:
'image_urls': [u'http://example.com/images/tshirt.jpg'],
'images': [{ 'checksum': '264d3bbdffd4ab3dcb8f234c51329da8',
'path': 'full/069f409fd4cdb02248d726a625fecd8299e6055e.jpg',
'url': 'http://example.com/images/tshirt.jpg'}],
Bây giờ, hãy truy cập vào thùng chứa Amazon S3 và xem. Hình ảnh và hình thu nhỏ của bạn đều ở đó!
Một lần nữa, xin cảm ơn Nick Verwymeren vì bài đăng trên blog trả lời chính xác câu hỏi này!
Chỉ cho tôi trang mà họ cho biết hỗ trợ tải lên S3. Tôi không thể tìm thấy nó. Đừng bận tâm, tôi đã thấy nó ngay bây giờ. Sử dụng python-boto để tải lên S3, nó hoàn toàn được ghi lại. – rantanplan
Đồng ý python-boto là con đường để đi. –
Cảm ơn các bạn, nhưng tôi đã hỏi nguyên nhân Nó đã được thực hiện trong cặn bã. –