我目前在我正在构建的刮刀的设置模块中设置了DEPTH_LIMIT。我希望能够作为命令行参数传递深度限制。我已经尝试了以下作为爬虫的构造函数(及其变体):
def __init__(self, max_depth=3, *args, **kwargs):
super(MySpider, self).__init__(*args, **kwargs)
self.settings['DEPTH_LIMIT'] = int(max_depth)
但是,我收到错误,堆栈转储结束于:
File "/usr/local/lib/python2.7/dist-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
甚至尝试在构造函数中打印self.settings ['DEPTH_LIMIT']会导致错误。如何从命令行参数中设置爬虫程序中的DEPTH_LIMIT?
谢谢!
答案 0 :(得分:1)
您可以尝试这种方法:
def __init__(self, *args, **kwargs):
self.settings['DEPTH_LIMIT'] = int(kwargs.pop('max_depth', 3))
super(MySpider, self).__init__(*args, **kwargs)
有关pop
的详情,请参阅python official documentation
如果这不起作用,请添加一些关于如何创建抓取工具对象的代码(例如,类定义,以及您在哪里定义settings
属性)