python - Scrapy:无法覆盖 __init__function

标签 python scrapy

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

我需要使用 __init__ 函数,但总是出现此错误:

代码:

class mySpider(CrawlSpider):

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

这是我得到的错误: 找不到 KeyError Spider:mySpider。

没有 __init__ 函数一切正常

最佳答案

你需要这样写:

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 用于在 spider 中注册 scrapy 信号,我在这个例子中需要它在 spider 中而不是通常在管道中

关于python - Scrapy:无法覆盖 __init__function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11594485/

相关文章:

python - 在 Azure Web 应用程序中安装 psycopg2

python - 使用 Python/Scrapy 处理返回 HTTP 500 代码的页面

python - 使用 ItemLoader 跨多个响应加载项目字段

python - Scrapy返回 "Crawled 0 pages"

python - Scrapy 蜘蛛在并行进程中的多处理

python - 如何使用 MD5 哈希(或其他二进制数据)作为键名?

python - SQLAlchemy 验证器方法未针对同义词触发

python - 'mod_ty': Undeclared Identifier

python - 带有自定义折叠的嵌套交叉验证

python - 使用 scrapy 选择单选按钮