您的位置:首页 > 其它

BaseSpider在scrapy中的使用

2015-08-26 17:30 417 查看
Scrapy中继承自BaseSpider的爬虫是不被推荐的,如下所示:

from scrapy.spider import BaseSpider
class NegativeCommentScrapy(BaseSpider):
...
查看scrapy的源码,在scrapy.spider模块中可以看到BaseSpider的生成方式,他是通过如下方式构造的:

BaseSpider = create_deprecated_class('BaseSpider', Spider)
create_deprecated_class(arg0, arg1)函数是用于构建“不推荐类”的函数,由该函数构建的类(BaseSpider)的子类(NegativeCommentScrapy)会抛出Warning,以此提醒开发者注意。create_deprecated_class(arg0, arg1)函数来自scrapy.utils.deprecate模块。它的基本形式是:

class OldName(SomeClass):
# ...
class NewName(SomeClass):
# ...
OldName = create_deprecated_class('OldName', NewName)


OldName 即代表了“禁用类”,可以使其子类抛出警告(Warning),NewName的子类也被看做是OldName 的子类。这相当于实现了类的重命名。将OldName重命名成了NewName,用在此处即表示将BaseSpider重命名成了Spider,所以BaseSpider要禁用了。

总结:

1、如果用户继承自OldName(BaseSpider),会抛出异常。

2、如果sub是 NewName(Spider)的一个子类,那么``issubclass(sub, OldName)`` or ``isinstance(sub(), OldName)``都会返回True
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: