Ich versuche, einen Crawler mit vier Spinnen zu implementieren. Eine der Spinnen verwendet XMLFeedSpider und läuft von der Schale und scrapyd in Ordnung, aber die anderen verwenden BaseSpider und alle geben diesen Fehler, wenn in scrapyd laufen, aber fein aus der SchaleScrapyd Init Fehler beim Ausführen von Scrapy Spider
TypeError: init() got an unexpected keyword argument '_job'
Aus laufen, was ich das gelesen habe verweist auf ein Problem mit der Init-Funktion in meinen Spinnen, aber ich kann das Problem nicht lösen. Ich brauche keine Init-Funktion und wenn ich es komplett entferne, bekomme ich immer noch den Fehler!
Meine Spinne sieht aus wie diese
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
ich eine Anwendung eine init-Funktion, um die Spinne setzen kann, aber ich habe genau den gleichen Fehler.
def __init__(self, *args, **kwargs):
super(homeSpider, self).__init__(*args, **kwargs)
pass
Warum passiert das und wie löse ich es?
Haben Sie die Methode "__init__" in anderen Spidern definiert? Das Problem kann sein, dass du '** kwargs' dort nicht akzeptierst. – alecxe
' XMLFeedSpider' überschreibt nicht viel von 'BaseSpider' also sehe ich nicht, warum diese Spider diesen Fehler auslösen würden. (https://github.com/scrapy/scrapy/blob/master/scrapy/contrib/spiders/feed.py). Könnten Sie einen vollständigeren Stack-Trace veröffentlichen? –