项目加载器上下文¶项目加载器上下文是任意键/值的dict,在项目加载器中的所有输入和输出处理器之间共享。它可以在声明、实例化或使用项加载器时传递。它们用于修改输入/输出处理器的行为。 例如,假设您有一个函数 def parse_length(text, loader_context):
unit = loader_context.get('unit', 'm')
# ... length parsing code goes here ...
return parsed_length
接受一个 修改项目加载器上下文值有几种方法:
项加载器对象¶嵌套装载机¶从文档的子部分分析相关值时,创建嵌套加载器可能很有用。假设您正在从一个页面的页脚提取细节,该页面的外观如下: 例子:: <footer>
<a class="social" href="https://facebook.com/whatever">Like Us</a>
<a class="social" href="https://twitter.com/whatever">Follow Us</a>
<a class="email" href="mailto:whatever@example.com">Email Us</a>
</footer>
如果没有嵌套加载程序,则需要为要提取的每个值指定完整的xpath(或css)。 例子:: loader = ItemLoader(item=Item())
# load stuff not in the footer
loader.add_xpath('social', '//footer/a[@class = "social"]/@href')
loader.add_xpath('email', '//footer/a[@class = "email"]/@href')
loader.load_item()
相反,您可以使用页脚选择器创建嵌套加载程序,并添加相对于页脚的值。功能相同,但避免重复页脚选择器。 例子:: loader = ItemLoader(item=Item())
# load stuff not in the footer
footer_loader = loader.nested_xpath('//footer')
footer_loader.add_xpath('social', 'a[@class = "social"]/@href')
footer_loader.add_xpath('email', 'a[@class = "email"]/@href')
# no need to call footer_loader.load_item()
loader.load_item()
您可以任意嵌套加载程序,它们可以使用xpath或css选择器。作为一般准则,当嵌套加载器使您的代码更简单,但不要过度嵌套,否则您的解析器可能会变得难以读取。 |
Archiver|手机版|笨鸟自学网 ( 粤ICP备20019910号 )
GMT+8, 2024-11-23 16:25 , Processed in 0.033011 second(s), 17 queries .