codecamp

scrapy 2.3 项目加载器上下文

项目加载器上下文是任意键/值的dict,在项目加载器中的所有输入和输出处理器之间共享。它可以在声明、实例化或使用项加载器时传递。它们用于修改输入/输出处理器的行为。

例如,假设您有一个函数 ​parse_length​ 它接收文本值并从中提取长度:

def parse_length(text, loader_context):
    unit = loader_context.get('unit', 'm')
    # ... length parsing code goes here ...
    return parsed_length

接受一个 ​loader_context​ 参数函数显式地告诉项目加载器它能够接收项目加载器上下文,因此项目加载器在调用它时传递当前活动的上下文,以及处理器函数 (​parse_length​ 在这种情况下)可以使用它们。

修改项目加载器上下文值有几种方法:

1、通过修改当前活动的项加载器上下文 (​context​ 属性):

loader = ItemLoader(product) loader.context['unit'] = 'cm'

2、项目加载器实例化(项目加载器的关键字参数 __init__ 方法存储在项加载器上下文中):

loader = ItemLoader(product, unit='cm')

3、在项目加载器声明中,用于那些支持用项目加载器上下文实例化它们的输入/输出处理器。 MapCompose 是其中之一:

class ProductLoader(ItemLoader): length_out = MapCompose(parse_length, unit='cm')
scrapy 2.3 声明输入和输出处理器
scrapy 2.3 嵌套装载机
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

scrapy 2.3 链接提取器

scrapy 2.3 统计数据集合

scrapy 2.3 发送电子邮件

scrapy 2.3 蜘蛛合约

scrapy 2.3 如何部署蜘蛛

scrapy 2.3 AutoThrottle扩展

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }