刮擦-无法将数据上传到s3

时间:2018-06-19 12:39:15

标签: python scrapy

我正在使用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

任何帮助将不胜感激

1 个答案:

答案 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