2013-07-31 8 views
5

私は4つのスパイダーでクローラーを展開しようとしています。クモの一つはXMLFeedSpiderを使用して、シェルとscrapydから細かい動作しますが、他はBaseSpiderを使用して、すべてがscrapydで実行すると、このエラーを与えるが、私はこれを読んだことから、シェルscrapydスパイダースパイダー実行時のinitエラー

TypeError: init() got an unexpected keyword argument '_job'

から罰金実行します私のスパイダーでinit関数の問題を指摘していますが、問題を解決できないようです。 init関数は必要ありません。完全に削除してもエラーは出ます!

私のスパイダーは、私はクモの中で使用して、init関数を置くことができ、この

from scrapy import log 
from scrapy.spider import BaseSpider 
from scrapy.selector import XmlXPathSelector 
from betfeeds_master.items import Odds 
# Parameters 
MYGLOBAL = 39 
class homeSpider(BaseSpider): 
    name = "home" 
    #con = None 

    allowed_domains = ["www.myhome.com"] 
    start_urls = [ 
     "http://www.myhome.com/oddxml.aspx?lang=en&subscriber=mysubscriber", 
    ] 
    def parse(self, response): 

     items = [] 

     traceCompetition = "" 

     xxs = XmlXPathSelector(response) 
     oddsobjects = xxs.select("//OO[OddsType='3W' and Sport='Football']") 
     for oddsobject in oddsobjects: 
      item = Odds() 
      item['competition'] = ''.join(oddsobject.select('Tournament/text()').extract()) 
      if traceCompetition != item['competition']: 
       log.msg('Processing %s' % (item['competition']))    #print item['competition'] 
       traceCompetition = item['competition'] 
      item['matchDate'] = ''.join(oddsobject.select('Date/text()').extract()) 
      item['homeTeam'] = ''.join(oddsobject.select('OddsData/HomeTeam/text()').extract()) 
      item['awayTeam'] = ''.join(oddsobject.select('OddsData/AwayTeam/text()').extract()) 
      item['lastUpdated'] = '' 
      item['bookie'] = MYGLOBAL 
      item['home'] = ''.join(oddsobject.select('OddsData/HomeOdds/text()').extract()) 
      item['draw'] = ''.join(oddsobject.select('OddsData/DrawOdds/text()').extract()) 
      item['away'] = ''.join(oddsobject.select('OddsData/AwayOdds/text()').extract()) 

      items.append(item) 

     return items 

のように見えますが、私はまったく同じエラーを取得します。

def __init__(self, *args, **kwargs): 
    super(homeSpider, self).__init__(*args, **kwargs) 
    pass 

なぜこのようなことが起こり、どうすれば解決できますか?良い答えがalecxによって与えられた

+2

他のスパイダーで '__init__'メソッドを定義しましたか?問題はあなたが '** kwargs'を受け入れることができないということがあります。 – alecxe

+0

' XMLFeedSpider'は 'BaseSpider'から多くをオーバーライドしないので、なぜこれらのスパイダーがこのエラーを引き起こすのか分かりません。 (https://github.com/scrapy/scrapy/blob/master/scrapy/contrib/spiders/feed.py)。より完全なスタックトレースを投稿できますか? –

答えて

4

私のinit関数は:

def __init__(self, domain_name): 

scrapydのために卵内で動作するためには、次のようになります考慮

def __init__(self, domain_name, **kwargs): 

ドメイン名を必須引数として渡します

+0

thx!これは私の問題を解決しました。 – Pullie