我正在使用scrapy来从一个工作正常的网站上抓取数据,但是我无法将抓取的数据上传到Amazon s3
我在settings.py
FEED_URI = 's3://bucket/folder/data-%(time)s.csv'
FEED_FORMAT = 'csv'
AWS_ACCESS_KEY_ID = 'key-goes-here'
AWS_SECRET_ACCESS_KEY = 'secret-key-goes-here'
FEED_EXPORT_FIELDS = None
FEED_STORAGES = {}
FEED_STORAGES_BASE = {
'': 'scrapy.extensions.feedexport.FileFeedStorage',
'file': 'scrapy.extensions.feedexport.FileFeedStorage',
'stdout': 'scrapy.extensions.feedexport.StdoutFeedStorage',
's3': 'scrapy.extensions.feedexport.S3FeedStorage',
'ftp': 'scrapy.extensions.feedexport.FTPFeedStorage',
}
FEED_EXPORTERS = {}
FEED_EXPORTERS_BASE = {
'json': 'scrapy.exporters.JsonItemExporter',
'jsonlines': 'scrapy.exporters.JsonLinesItemExporter',
'jl': 'scrapy.exporters.JsonLinesItemExporter',
'csv': 'scrapy.exporters.CsvItemExporter',
'xml': 'scrapy.exporters.XmlItemExporter',
'marshal': 'scrapy.exporters.MarshalItemExporter',
'pickle': 'scrapy.exporters.PickleItemExporter',
}
ITEM_PIPELINE = {
'scrapy.pipelines.files.S3FilesStore': 1
}
这是我的环境详细信息,如果有帮助的话
Scrapy : 1.5.0
lxml : 4.1.1.0
libxml2 : 2.9.7
cssselect : 1.0.3
parsel : 1.4.0
w3lib : 1.19.0
Twisted : 18.4.0
Python : 3.6.4 (default, Mar 10 2018, 19:20:23) - [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)]
pyOpenSSL : 18.0.0 (OpenSSL 1.1.0h 27 Mar 2018)
cryptography : 2.2.2
Platform : Darwin-17.4.0-x86_64-i386-64bit
当我运行抓取器时,它运行正常,没有崩溃,但是我在日志的下一行中注意到了,我不确定为什么这样做以及如何启用它。
[scrapy.extensions.feedexport]错误:禁用的供稿存储方案:s3
任何帮助将不胜感激
答案 0 :(得分:0)
中的_storage_support函数引发了错误
scrapy / scrapy / extensions / feedexport.py
def _storage_supported(self, uri):
scheme = urlparse(uri).scheme
if scheme in self.storages:
try:
self._get_storage(uri)
return True
except NotConfigured:
logger.error("Disabled feed storage scheme: %(scheme)s",
{'scheme': scheme})
else:
logger.error("Unknown feed storage scheme: %(scheme)s",
{'scheme': scheme})
您的URI参数似乎有问题。
请参阅本文档
https://doc.scrapy.org/en/latest/topics/exporters.html#csvitemexporter