嵌套项数据的正确方法是什么?在
例如,我想要一个产品的输出:
{
'price': price,
'title': title,
'meta': {
'url': url,
'added_on': added_on
}
我有恶心的东西共:
^{pr2}$现在,我的方法是根据新项目模板重新格式化管道中的整个项目:
class FormatedItem(scrapy.Item):
title = scrapy.Field()
price = scrapy.Field()
meta = scrapy.Field()
在管道中:
def process_item(self, item, spider):
formated_item = FormatedItem()
formated_item['title'] = item['title']
formated_item['price'] = item['price']
formated_item['meta'] = {
'url': item['url'],
'added_on': item['added_on']
}
return formated_item
这是正确的方法来处理这个问题,还是有一个更直接的方法来处理这个问题而不破坏框架的哲学?在
更新来自注释:看起来nested loaders是更新的方法。另一条评论指出,这种方法在序列化期间会导致错误。在
最好的方法是创建
main
和meta
项类/装入器。在示例用法:
^{pr2}$之后,您可以通过创建更多的“子项”在将来轻松扩展项
我认为在spider中构建字典会更简单。这里有两种不同的方法,都能达到相同的效果。这里唯一可能的解除中断是处理器应用于item['meta']字段,而不是应用于item['meta']['added_on']和item['meta']['url']字段。在
有没有什么特别的原因让你想用这种方式来构造它而不是解压元字段?在
相关问题 更多 >
编程相关推荐