2012-07-21 39 views
3

我創建了一個從CrawlSpider繼承的蜘蛛。Scrapy:無法覆蓋__init__function

我需要使用__init__功能,但總是收到此錯誤:

代碼:

class mySpider(CrawlSpider): 

def __init__(self): 
    super(mySpider, self).__init__() 
    ..... 

這是我得到的錯誤: KeyError異常蜘蛛沒有發現:mySpider。

沒有__init__功能一切正常

+0

'super'的語義有時可能會讓人困惑。試試'CrawlSpider .__ init __(self)'。 – 2012-07-21 17:53:05

回答

5

你需要把它像這樣:

def __init__(self, *a, **kw): 
    super(MySpider, self).__init__(*a, **kw) 
    # your code here 

工作例如:

class MySpider(CrawlSpider): 
    name = "company" 
    allowed_domains = ["site.com"] 
    start_urls = ["http://www.site.com"] 

    def __init__(self, *a, **kw): 
     super(MySpider, self).__init__(*a, **kw) 
     dispatcher.connect(self.spider_closed, signals.spider_closed) 

這裏的init,使用了蜘蛛註冊scrapy信號,我在這個例子中需要蜘蛛而不是通常在管道中

+0

還不算好。 我做self.name =「公司」 我所做的:scrapy爬行公司 同樣的錯誤 – DjangoPy 2012-07-21 18:13:57

+0

KeyError異常蜘蛛沒有發現:公司 我需要不同的方式運行呢? – DjangoPy 2012-07-21 18:16:56

+0

有沒有一個函數可以重寫來執行我的預刮操作而不是init? – DjangoPy 2012-07-21 18:18:31