Scrapy中继承自BaseSpider的爬虫是不被推荐的,如下所示:
- from scrapy.spider import BaseSpider
- class NegativeCommentScrapy(BaseSpider):
- ...
- BaseSpider = create_deprecated_class('BaseSpider', Spider)
- 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