2017-01-29 4 views
0

、私は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 (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 

任意のアイデア:

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' 

以前のトレースバックで私もこれを持っていますか?

+1

あなたの質問に対する回答はこちらですhttp://stackoverflow.com/questions/37223700/why-does-scrapyd-throw-feedexporter-object-has-no-attribute-slot-exceptio クローラを実行する前に、out.jsonファイルを閉じます。 –

+1

@EduardIlyasov明らかに、それは__init __()メソッド中の 'super().__ init __(self、* args、** kwargs)'によって引き起こされたもので、 'super().__ init __()'は自己引数を持たず、私はそれを削除するとすぐに再び働いた。しかし、それはどのように動作するのか分かりません。 – ChiseledAbs

答えて

0

管理者権限でコマンドを実行しようとしましたが、問題は解決しました。

+0

質問の中であなたと同じものを持っていた問題は何ですか?彼らの決断はかなり違っていたようだ... – Taegost

関連する問題