BaseSpider在scrapy中的使用
2015-08-26 17:30
417 查看
Scrapy中继承自BaseSpider的爬虫是不被推荐的,如下所示:
OldName 即代表了“禁用类”,可以使其子类抛出警告(Warning),NewName的子类也被看做是OldName 的子类。这相当于实现了类的重命名。将OldName重命名成了NewName,用在此处即表示将BaseSpider重命名成了Spider,所以BaseSpider要禁用了。
总结:
1、如果用户继承自OldName(BaseSpider),会抛出异常。
2、如果sub是 NewName(Spider)的一个子类,那么``issubclass(sub, OldName)`` or ``isinstance(sub(), OldName)``都会返回True
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
相关文章推荐
- 在Linux下卸载Oracle 11g
- 安卓adapter子项动态设置控件宽度以及扩展动画
- 基于Netty5.0入门案例一之NettyServer
- Android的Configuration
- 自定义事件(不带参数实现)
- Delphi控件的显示内容与显示边框是两回事
- 原码~反码~补码
- ORACLE刷新数据
- 每天进步一点点————事务控制(2)
- 关于lvs的activeconn超级大的问题
- LNMP-Linux下Nginx+MySQL+PHP+phpMyAdmin+eAcelerator一键安装包
- Android App 升级 实现逻辑
- Android-使用DOM解析与生成XML文件
- 学习网站
- 4-Logistic Regression
- CSU 1328 近似回文词
- 压力测试工具 jmeter 使用发送json报文
- HashMap的工作原理
- Android下的USB Host介绍和开发
- 纯C语言INI文件解析