2013-07-31 3 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 

왜 이런 일이 발생하며 어떻게 해결할 수 있습니까?

+2

다른 스파이더에서'__init__' 메소드를 정의 했습니까? 문제는 여러분이 거기에'** kwargs '를 받아들이지 않는다는 것입니다. – alecxe

+0

'XMLFeedSpider'는'BaseSpider'에서 많은 것을 오버라이드하지 않으므로이 거미들이 왜이 에러를 일으키는 지 알지 못합니다. (https://github.com/scrapy/scrapy/blob/master/scrapy/contrib/spiders/feed.py). 좀 더 완벽한 스택 추적을 게시 할 수 있습니까? –

답변

4

좋은 대답은 alecx에 의해 주어졌다 :

내 init 함수가 있었다 :

가 scrapyd에 대한 계란 내에서 작동하기 위해
def __init__(self, domain_name): 

, 그것은해야한다 :

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

고려 domain_name을 필수 인수로 전달하십시오.

+0

thx! 이것은 내 문제를 해결했다. – Pullie

관련 문제