У меня есть этот простой паук, когда я называю scrapy crawl dataspider
он прекрасно работает и печатает элемент в выходе:AttributeError: объект «FeedExporter» не имеет атрибут «слот»
import json
from scrapy.spiders import Spider
class dataspider(Spider):
name='dataspider'
start_urls=('https://www.google.com/finance/match?matchtype=matchall&ei=UVlPWNmDEYm_U7SqgvAH&q=AAPL',)
def parse(self, response):
j=json.loads(response.body.decode('utf-8'))
yield j['matches'][1]
Выходы:
{'t': 'AAPL', 'n': 'Apple Inc.', 'e': 'NASDAQ', 'id': '22144'}
Однако, как только я пытаюсь сохранить элемент в файле с помощью scrapy crawl dataspider -o out.json
я получаю эту ошибку:
AttributeError: 'FeedExporter' object has no attribute 'slot'
Traceback является:
2017-01-30 01:10:57 [scrapy.utils.signal] ERROR: Error caught on signal handler: <bound method FeedExporter.close_spider of <scrapy.extensions.feedexport.FeedExporter object at 0x7f31e2d8ab00>>
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/twisted/internet/defer.py", line 150, in maybeDeferred
result = f(*args, **kw)
File "/usr/lib/python3.6/site-packages/pydispatch/robustapply.py", line 55, in robustApply
return receiver(*arguments, **named)
File "/usr/lib/python3.6/site-packages/scrapy/extensions/feedexport.py", line 198, in close_spider
slot = self.slot
AttributeError: 'FeedExporter' object has no attribute 'slot'
Ранее в TRACEBACK у меня есть это:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/twisted/internet/defer.py", line 150, in maybeDeferred
result = f(*args, **kw)
File "/usr/lib/python3.6/site-packages/pydispatch/robustapply.py", line 55, in robustApply
return receiver(*arguments, **named)
File "/usr/lib/python3.6/site-packages/scrapy/extensions/feedexport.py", line 187, in open_spider
uri = self.urifmt % self._get_uri_params(spider)
File "/usr/lib/python3.6/site-packages/scrapy/extensions/feedexport.py", line 262, in _get_uri_params
params[k] = getattr(spider, k)
File "/usr/lib/python3.6/site-packages/scrapy/spiders/__init__.py", line 36, in logger
logger = logging.getLogger(self.name)
File "/usr/lib/python3.6/logging/__init__.py", line 1813, in getLogger
return Logger.manager.getLogger(name)
File "/usr/lib/python3.6/logging/__init__.py", line 1167, in getLogger
raise TypeError('A logger name must be a string')
TypeError: A logger name must be a string
Любая идея, что проблема есть?
Кажется, ответ на ваш вопрос здесь http://stackoverflow.com/questions/37223700/why-does-scrapyd-throw-feedexporter-object-has-no-attribute-slot-exceptio Вы должны попробовать Закройте файл .json перед запуском искателя. –
@EduardIlyasov, по-видимому, был вызван 'super() .__ init __ (self, * args, ** kwargs)' в методе __init __(), 'super() .__ init __()' не должен иметь собственный аргумент, как только я удалил его, он снова сработал. Не знаю, как это работает. – ChiseledAbs