在scrapy spider中维护请求之间持久元值的便捷工具
stickymeta的Python项目详细描述
在 小蜘蛛。可用作spider中间件和spider回调 装饰师。
安装
pip install stickymeta
用法
作为spider中间件
将中间件添加到settings.py:
SPIDER_MIDDLEWARES = { ... 'stickymeta.StickyMetaMiddleware': 543, ... }
以及sticky_meta属性,该属性包含 蜘蛛:
class TheSpider(scrapy.Spider): name = 'thespider' sticky_meta = ('cookiejar', 'foo', 'bar')
对应键的所有值将在 所有的请求和响应。
作为装饰师
@斗杆元数据
from stickymeta import stick_meta
保留作为装饰器参数传递的键的持久值:
@stick_meta('a', 'b', 'c') def parse(self, response): ... yield scrapy.Request(url)
相当于:
def parse(self, response) ... meta = { 'a': response.meta['a'], 'b': response.meta['b'], 'c': response.meta['c'], } yield scrapy.Request(url, meta=meta}
@斗杆cj
from stickymeta import stick_cj
stick_meta处理的快捷方式cookiejar作为默认参数 值,因此
@stick_cj('a', 'b', 'c') def parse(self,response): ...
相当于
@stick_meta('cookiejar', 'a', 'b', 'c') def parse(self,response): ...
spider属性sticky_meta也影响到decorators,后面两个 代码片段将以同样的方式处理meta:
class TheSpider(scrapy.Spider): name = 'thespider' sticky_meta = ('a', 'b', 'c') @stick_meta() def parse(self, response): ... yield Request(url)
vs
class TheSpider(scrapy.Spider): name = 'thespider' @stick_meta('a', 'b', 'c') def parse(self, response): ... yield Request(url)