现在的位置: 首页 > 综合 > 正文

升级scrapy-redis代码,使与更新版本scrapy兼容

2014年10月14日 ⁄ 综合 ⁄ 共 1514字 ⁄ 字号 评论关闭
文章目录

scrapy-redis的安装要求是scrapy版本高于0.14,随着scrapy关注度的提高,其开发更新速度也越来越快。到现在,其版本已经是于14年7月8号发布的0.24.2。版本升级过程中,对一些类进行了重命名,也有一些变量的类型发生的变化。

现指出在使用scrapy-redis中发现的与scrapy不兼容情况(注意:这里所述的“不兼容”指的并不是不能运行,由于scrapy已经对相应情况进行了处理,所以在非严重情况下只会爆出warnning)。

情况有如下几种:

其中1/2属于rename,而5则是直接废弃掉。

1.关于ItemLoader

/home/jerry/open_source_project/others_project/scrapy-redis/example-project/example/items.py:21: ScrapyDeprecationWarning: example.items.ExampleLoader inherits from deprecated class scrapy.contrib.loader.XPathItemLoader, please inherit from scrapy.contrib.loader.ItemLoader. (warning only on first subclass, there may be others)
  class ExampleLoader(XPathItemLoader):

之前的scrapy.contrib.loader.XPathItemLoader已经弃用,现改为scrapy.contrib.loader.ItemLoader。

2.关于BaseSpider到Spider

/usr/local/lib/python2.7/dist-packages/scrapy_redis/spiders.py:40: ScrapyDeprecationWarning: scrapy_redis.spiders.RedisSpider inherits from deprecated class scrapy.spider.BaseSpider, please inherit from scrapy.spider.Spider. (warning only on first subclass, there may be others)
  class RedisSpider(RedisMixin, BaseSpider):

之前的scrapy.spider.BaseSpider已经rename(文档中用到的词)为scrapy.spider.Spider

3.关于ITEM_PIPELINES

 ScrapyDeprecationWarning: ITEM_PIPELINES defined as a list or a set is deprecated, switch to a dict
  category=ScrapyDeprecationWarning, stacklevel=1)

ITEM_PIPELINES现在的数据结构是dict,之前的set和list已经不用了。

4.新版本scrapy中Item_piplines中声明的pipeline后面加上代表数据流经过顺序的0-1000数字。这也是使用dict的原因。

5.HtmlXpathSeletor到Selector

这个不属于rename,连相应的接口函数也改变了,如HtmlXpathSeletor.select()变为了功能一致的Selector.xpath()。

原创,文章链接:http://blog.csdn.net/u012150179/article/details/38087661

抱歉!评论已关闭.