BaseSpider在scrapy中的使用

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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值