scrapy 如何导入设置以覆盖它

Posted

技术标签:

【中文标题】scrapy 如何导入设置以覆盖它【英文标题】:scrapy how to import the settings to override it 【发布时间】:2014-10-10 19:07:03 【问题描述】:

这是我的代码

class Test(Spider):
    self.settings.overrides['JOBDIR']= "seen"

我明白了:

  File "C:\Python27\lib\site-packages\scrapy\spider.py", line 46, in settings
    return self.crawler.settings
  File "C:\Python27\lib\site-packages\scrapy\spider.py", line 41, in crawler
    assert hasattr(self, '_crawler'), "Spider not bounded to any crawler"
AssertionError: Spider not bounded to any crawler

我正在扩展Spider,但我没有使用Crawler,因为我没有链接或规则可遵循

我猜我的问题是因为我没有很好地导入设置,我需要你的帮助

【问题讨论】:

对此有什么答案吗? 答案没有帮助吗? @Udy 我不知道我还没有尝试过。我现在很忙,但我稍后会测试它,无论如何+1谢谢 【参考方案1】:

根据documentation,可以将每个蜘蛛的个别设置设置为一个类属性custom_settings,应该是一个字典。在您的情况下,它将如下所示:

class TestSpider(Spider):

    custom_settings = 'JOBDIR':"seen"
    # The rest of the spider goes here

不确定这是否适用于早期版本的 scrapy。

【讨论】:

【参考方案2】:

要更改蜘蛛中的设置,您可以:

class TestSpider(Spider):

    def set_crawler(self, crawler):
        super(TestSpider, self).set_crawler(crawler)
        crawler.settings.set('JOBDIR','seen')

    # rest of spider code

【讨论】:

为我工作。谢谢(我猜应该标记为已接受) seen之后修复那个缺失的" 我得到 'CrawlerSettings' 对象没有属性 'set' 你用哪个版本的scrapy? 由于必须使用 Scrapy 1.0 from_crawler 而不是 set_crawler

以上是关于scrapy 如何导入设置以覆盖它的主要内容,如果未能解决你的问题,请参考以下文章

scrapy.Spider的属性和方法

如何从项目管道访问scrapy设置

Scrapy - 如何启动同一个蜘蛛进程的多个实例?

Scrapy Python 设置用户代理

scrapy设置随机请求头的两种方法

使用Scrapy命令行工具导出JSON文件时编码设置