5

我创建了一个从 CrawlSpider 继承的蜘蛛。

我需要使用该__init__功能,但总是收到此错误:

代码:

class mySpider(CrawlSpider):

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

这是我得到的错误: KeyError Spider not found: mySpider.

没有这个__init__功能一切正常

4

1 回答 1

10

你需要这样写:

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信号,在这个例子中我需要它在蜘蛛中而不是通常在管道中

于 2012-07-21T18:00:22.363 回答