您的位置:  首页 » Python » 爬虫蜘蛛项目加载器Item Loader类详解之ItemLoader对象详解 (21)python SCRAPY最新教程1.51以上版本

classscrapy.loader.ItemLoader[itemselectorresponse]** kwargs 

返回一个新的Item Loader来填充给定的Item。如果没有给出项目,则使用该类自动实例化一个项目 default_item_class

当使用选择器响应参数进行实例化时,ItemLoader该类提供了使用选择器从网页中提取数据的便利机制。

参数:
  • Item对象) -项目实例来填充利用后续调用 add_xpath()add_css()add_value()
  • selectorSelectorobject) – 使用add_xpath()(resp。add_css())或replace_xpath() (resp。replace_css())方法时从中提取数据的选择器 。
  • responseResponseobject) – default_selector_class除非给出了选择器参数,否则用于构造选择器的响应 ,在这种情况下,忽略该参数。

项目,选择器,响应和其余关键字参数分配给Loader上下文(可通过context属性访问)。

ItemLoader 实例有以下方法:

get_value*处理器** kwargs 
处理给valueprocessors和关键字参数给定的给定。

可用关键字参数:

参数: restr 或者编译的正则表达式) – 一个正则表达式,用于从extract_regex()处理器之前应用的方法中提取给定值的数据

例子:

>>> from scrapy.loader.processors import TakeFirst
>>> loader.get_value(u'name: foo', TakeFirst(), unicode.upper, re='name: (.+)')
'FOO`

 

add_valuefield_namevalue* processors** kwargs 
处理然后添加给value定字段的给定。

首先通过get_value()给出 processors和传递该值kwargs,然后通过 字段输入处理器并将其结果附加到为该字段收集的数据中。如果该字段已包含收集的数据,则添加新数据。

给定的field_name可以是None,在这种情况下,可以添加多个字段的值。并且处理后的值应该是一个字典,其中field_name映射到值。

例子:

loader.add_value('name', u'Color TV')
loader.add_value('colours', [u'white', u'blue'])
loader.add_value('length', u'100')
loader.add_value('name', u'name: foo', TakeFirst(), re='name: (.+)')
loader.add_value(None, {'name': u'foo', 'sex': u'male'})

 

replace_valuefield_namevalue* processors** kwargs 
add_value()但相似但是用新值替换收集的数据而不是添加它。
get_xpathxpath*处理器** kwargs 
类似于ItemLoader.get_value()但接收XPath而不是值,该值用于从与此关联的选择器中提取unicode字符串列表ItemLoader

参数:
  • xpathstr) – 从中​​提取数据的XPath
  • restr 编译的正则表达式) – 用于从所选XPath区域提取数据的正则表达式

例子:

# HTML snippet: <p class="product-name">Color TV</p>
loader.get_xpath('//p[@class="product-name"]')
# HTML snippet: <p id="price">the price is $1200</p>
loader.get_xpath('//p[@id="price"]', TakeFirst(), re='the price is (.*)')

 

add_xpathfield_namexpath* processors** kwargs 
类似于ItemLoader.add_value()但接收XPath而不是值,该值用于从与此关联的选择器中提取unicode字符串列表ItemLoader

get_xpath()kwargs

参数: xpathstr) – 从中​​提取数据的XPath

例子:

# HTML snippet: <p class="product-name">Color TV</p>
loader.add_xpath('name', '//p[@class="product-name"]')
# HTML snippet: <p id="price">the price is $1200</p>
loader.add_xpath('price', '//p[@id="price"]', re='the price is (.*)')

 

replace_xpathfield_namexpath* processors** kwargs 
类似于add_xpath()但替换收集的数据而不是添加它。
get_csscss*处理器** kwargs 
类似ItemLoader.get_value()但接收CSS选择器而不是值,用于从与此关联的选择器中提取unicode字符串列表ItemLoader

参数:
  • cssstr) – 从中​​提取数据的CSS选择器
  • restr 编译的正则表达式) – 用于从所选CSS区域提取数据的正则表达式

例子:

# HTML snippet: <p class="product-name">Color TV</p>
loader.get_css('p.product-name')
# HTML snippet: <p id="price">the price is $1200</p>
loader.get_css('p#price', TakeFirst(), re='the price is (.*)')

 

add_cssfield_namecss* processors** kwargs 
类似ItemLoader.add_value()但接收CSS选择器而不是值,用于从与此关联的选择器中提取unicode字符串列表ItemLoader

get_css()kwargs

参数: cssstr) – 从中​​提取数据的CSS选择器

例子:

# HTML snippet: <p class="product-name">Color TV</p>
loader.add_css('name', 'p.product-name')
# HTML snippet: <p id="price">the price is $1200</p>
loader.add_css('price', 'p#price', re='the price is (.*)')

 

replace_cssfield_namecss* processors** kwargs 
类似于add_css()但替换收集的数据而不是添加它。
load_item
使用目前为止收集的数据填充项目,并将其返回。收集的数据首先通过输出处理器,以获得分配给每个项目字段的最终值。
nested_xpathxpath 
使用xpath选择器创建嵌套加载器。提供的选择器相对于与此关联的选择器应用ItemLoader。嵌套装载机股份Item 与母公司ItemLoader如此呼吁add_xpath()add_value()replace_value()等会像预期的那样。
nested_csscss 
使用css选择器创建嵌套加载器。提供的选择器相对于与此关联的选择器应用ItemLoader。嵌套装载机股份Item 与母公司ItemLoader如此呼吁add_xpath()add_value()replace_value()等会像预期的那样。
get_collected_valuesfield_name 
返回给定字段的收集值。
get_output_valuefield_name 
对于给定字段,返回使用输出处理器解析的收集值。此方法根本不会填充或修改项目。
get_input_processorfield_name 
返回给定字段的输入处理器。
get_output_processorfield_name 
返回给定字段的输出处理器。

ItemLoader 实例具有以下属性:

item
Item此Item Loader正在解析的对象。
context
此项加载器的当前活动上下文
default_item_class
一个Item类(或工厂),用于在构造函数中未给出时实例化项。
default_input_processor
默认输入处理器,用于那些未指定一个的字段。
default_output_processor
默认输出处理器,用于那些未指定的字段。
default_selector_class
如果只在构造函数中给出响应,则用于构造selectorthis 的类ItemLoader。如果在构造函数中给出了选择器,则忽略此属性。有时在子类中重写此属性。
selector
Selector从中提取数据的对象。它可以是构造函数中给出的选择器,也可以是使用构造函数在构造函数中给出的响应 default_selector_class。此属性是只读的。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注