BaseSpider在scrapy中的使用

Scrapy中继承自BaseSpider的爬虫是不被推荐的,如下所示:

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

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

[python]  view plain  copy
  1. class OldName(SomeClass):  
  2.             # ...  
  3. class NewName(SomeClass):  
  4.             # ...  
  5. 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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值