Экспорт Scrapy JSON Feed - Сбой для динамического FEED_URI для AWS S3 с использованием ScrapingHub

Я написал скребок, который записывает данные, используя JsonItemExporter и я разработал, как экспортировать эти данные в мой AWS S3, используя следующие настройки Spider в ScrapingHub

AWS_ACCESS_KEY_ID = AAAAAAAAAAAAAAAAAAAA
AWS_SECRET_ACCESS_KEY = Abababababababababababababababababababab
FEED_FORMAT = json
FEED_URI = s3://scraper-dexi/my-folder/jobs-001.json

Что мне нужно сделать, это динамически установить дату / время в выходном файле, и я был бы рад, если бы он использовал формат даты и времени, как это jobs-20171215-1000.json но я не знаю, как установить динамический FEED_URI с помощью scrapinghub.

В Интернете не так много информации, и единственный пример, который я могу найти, находится здесь, на сайте соскоба, но, к сожалению, он не работает.

Когда я применяю эти настройки на основе примера в документации

AWS_ACCESS_KEY_ID = AAAAAAAAAAAAAAAAAAAA
AWS_SECRET_ACCESS_KEY = Abababababababababababababababababababab
FEED_FORMAT = json
FEED_URI = s3://scraper-dexi/my-folder/jobs-%(time).json

Обратите внимание на%(время) в моем URI

Сбой происходит со следующими ошибками

[scrapy.utils.signal] Error caught on signal handler: <bound method ?.open_spider of <scrapy.extensions.feedexport.FeedExporter object at 0x7fd11625d410>> Less
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/twisted/internet/defer.py", line 150, in maybeDeferred
    result = f(*args, **kw)
  File "/usr/local/lib/python2.7/site-packages/pydispatch/robustapply.py", line 55, in robustApply
    return receiver(*arguments, **named)
  File "/usr/local/lib/python2.7/site-packages/scrapy/extensions/feedexport.py", line 190, in open_spider
    uri = self.urifmt % self._get_uri_params(spider)
ValueError: unsupported format character 'j' (0x6a) at index 53

[scrapy.utils.signal] Error caught on signal handler: <bound method ?.item_scraped of <scrapy.extensions.feedexport.FeedExporter object at 0x7fd11625d410>> Less
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/twisted/internet/defer.py", line 150, in maybeDeferred
    result = f(*args, **kw)
  File "/usr/local/lib/python2.7/site-packages/pydispatch/robustapply.py", line 55, in robustApply
    return receiver(*arguments, **named)
  File "/usr/local/lib/python2.7/site-packages/scrapy/extensions/feedexport.py", line 220, in item_scraped
    slot = self.slot
AttributeError: 'FeedExporter' object has no attribute 'slot'

1 ответ

Я неправильно понял важность s в документации и не понял, что это было частью подписи токена.

Я переделал

FEED_URI = s3://scraper-dexi/my-folder/jobs-%(time).json

в

FEED_URI = s3://scraper-dexi/my-folder/jobs-%(time)s.json

согласно документации и решил проблему

%(время)

изменился на

% (время) с

Другие вопросы по тегам