Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在AmazonS3上存储碎片图像?_Python_Amazon S3_Scrapy - Fatal编程技术网

Python 如何在AmazonS3上存储碎片图像?

Python 如何在AmazonS3上存储碎片图像?,python,amazon-s3,scrapy,Python,Amazon S3,Scrapy,我已经使用Scrapy大约一周了,我想把图片存储到AmazonS3,他们提到他们支持图片上传到AmazonS3,但是没有文档记录。那么,有人知道如何将AmazonS3与Scrapy一起使用吗 这是他们的详细文档。您需要3种设置: AWS_ACCESS_KEY_ID = "xxxxxx" AWS_SECRET_ACCESS_KEY = "xxxxxx" IMAGES_STORE = "s3://bucketname/base-key-dir-if-any/" 仅此而已,即图像将使用在中描述的相同

我已经使用Scrapy大约一周了,我想把图片存储到AmazonS3,他们提到他们支持图片上传到AmazonS3,但是没有文档记录。那么,有人知道如何将AmazonS3与Scrapy一起使用吗

这是他们的详细文档。

您需要3种设置:

AWS_ACCESS_KEY_ID = "xxxxxx"
AWS_SECRET_ACCESS_KEY = "xxxxxx"
IMAGES_STORE = "s3://bucketname/base-key-dir-if-any/"
仅此而已,即图像将使用在中描述的相同目录进行存储,即:


自上一次回答以来已经过去了几年,有些事情已经发生了变化(2015年)。Nick Verwymeren写了一篇博客文章,详细介绍了如何做到这一点的更新版本。他的博文如下:

在您的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'
为了安全起见,我建议在AmazonAWS界面中创建一个新用户,并向该用户授予bucket的只读/写权限

现在,我们需要安装一些不是Scrapy默认附带的软件包:

pip install pillow
pip intall botocore
Pillow处理图像处理,boto将提供连接到S3的库

Scrapy使用项目中的image_url键查找它应该下载的图像。这应该是图像URL的列表。下载后,Scrapy会将图像位置的详细信息写入图像键

不要忘记将以下内容添加到items.py文件中:

class MyItem(scrapy.Item):
    image_urls = scrapy.Field()
    images = scrapy.Field()
现在不要忘记在爬网期间实际填充image_url键。一旦您对站点进行爬网,给定项目的最终输出将如下所示:

'image_urls': [u'http://example.com/images/tshirt.jpg'],
'images': [{ 'checksum': '264d3bbdffd4ab3dcb8f234c51329da8',
         'path': 'full/069f409fd4cdb02248d726a625fecd8299e6055e.jpg',
         'url': 'http://example.com/images/tshirt.jpg'}],
现在向你走去,看一看。你的图片和缩略图都在那里

再次感谢Nick Verwymeren的博客文章,它准确地回答了这个问题

@2083 我和你遇到过同样的问题。没有错误,并且已经安装了boto。 你可以在这里找到答案: “Scrapy仅在Python 2上支持boto”
我想你和我一样在使用Python 3。然后,我安装了botocore。成功了

让我看看他们说支持上传到S3的页面。我找不到它。没关系,我现在看到了。使用python boto上传到S3,这是完全有文档记录的。同意python boto是一种方式。谢谢各位,但我是在问,因为它已经在scrapy中实现了。也许你可以试试我的解决方案:我刚刚尝试过,但出现了错误“没有名为boto.S3.connection的模块”。。。。。刚刚尝试了easy_install boto,现在可以正常工作了:)感谢8/8/12 v.14.4的版本——s3映像存储实现存在一些问题,可能会导致爬虫挂起对^c没有响应,需要kill-9才能结束。快速浏览代码使我怀疑s3映像存储代码执行延迟的方式存在问题。@dangra我正在尝试使其正常工作,但无法(映像未上载到s3)。我已经设置:
AWS\u ACCESS\u KEY\u ID=“xxx”AWS\u SECRET\u ACCESS\u KEY=“xxx”IMAGES\u STORE=”http://s3-eu-west-1.amazonaws.com/[bucketname]“
Scrapy似乎没有任何错误。我还安装了boto。我可能会缺少什么?输入错误(缺少
s
):
pip安装boto
从2018年和Scrapy 1.5.0开始,需要
botocore
,而不是
boto
,否则图像管道将被禁用,并显示一条警告消息,说明
botocore缺少
。通过
@Duc Chi
'image_urls': [u'http://example.com/images/tshirt.jpg'],
'images': [{ 'checksum': '264d3bbdffd4ab3dcb8f234c51329da8',
         'path': 'full/069f409fd4cdb02248d726a625fecd8299e6055e.jpg',
         'url': 'http://example.com/images/tshirt.jpg'}],