我想在项目类中添加项目类 [英] I want to add item class within an item class

查看:43
本文介绍了我想在项目类中添加项目类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

最终的 JSON 将是:

 "地址": ----,状态":  -  - ,年: {第一的":  -  - ,第二": {基本的":  -  - ,信息":  -  - ,}},

我想像(只是示例)一样创建我的 items.py:

class Item(scrapy.Item):地址 = scrapy.Field()状态 = scrapy.Field()年 = scrapy.Field(first),scrapy.Field(second)类第一(scrapy.Item):金额 = scrapy.Field()第二类(scrapy.Item):基本=scrapy.Field()信息 = scrapy.Field()

如何实现这个,已经检查过这个https://doc.scrapy.org/en/latest/topics/items.html#extending-items

如何在scrapy中实现嵌套项?

但是没有关于这个概念的线索......有什么建议吗?

解决方案

class Item(scrapy.Item):地址 = scrapy.Field()状态 = scrapy.Field()年 = scrapy.Field(serializer=dict)班级年(scrapy.Item):第一个=scrapy.Field(serializer=dict)第二个=scrapy.Field(serializer=dict)类第一(scrapy.Item):金额 = scrapy.Field()第二类(scrapy.Item):基本=scrapy.Field()信息 = scrapy.Field()

这样你就可以做到:

<预><代码>>>>b = 第二(基本=你好",信息=你好世界")>>>a = 第一个(数量 = 3)>>>年 = 年(第一个 = a,第二个 = b)>>>年{'first': {'amounts': 3},'第二':{'基本':'你好','信息':'你好世界'}}>>>item = Item(address='address value', state='state value', year=year)>>>物品{'地址':'地址值','状态':'状态值','year': {'first': {'amounts': 3}, 'second': {'basic': 'hello', 'information': 'hello world'}}}

Final JSON will be :

            "address": ----,
            "state": ----,
            year: {
                "first": ----,
                "second": {
                    "basic": ----,
                    "Information": ----,
                    }
            },

I want to create my items.py like (just example):

class Item(scrapy.Item): 
  address = scrapy.Field()
  state = scrapy.Field()
  year = scrapy.Field(first), scrapy.Field(second)

class first(scrapy.Item):
  amounts = scrapy.Field()

class second(scrapy.Item):
  basic = scrapy.Field()
  information = scrapy.Field()

How to implement this , already checked this https://doc.scrapy.org/en/latest/topics/items.html#extending-items

how to implement nested item in scrapy?

but there are no clue about this concept ... any suggestion?

解决方案

class Item(scrapy.Item): 
  address = scrapy.Field()
  state = scrapy.Field()
  year = scrapy.Field(serializer=dict)

class Year(scrapy.Item):
  first = scrapy.Field(serializer=dict)
  second = scrapy.Field(serializer=dict)

class first(scrapy.Item):
  amounts = scrapy.Field()

class second(scrapy.Item):
  basic = scrapy.Field()
  information = scrapy.Field()

This way you can do this:

>>> b = second(basic="hello", information="hello world")
>>> a = first(amounts=3)
>>> year = Year(first=a, second=b)
>>> year
{'first': {'amounts': 3},
 'second': {'basic': 'hello', 'information': 'hello world'}}
>>> item = Item(address='address value', state='state value', year=year)
>>> item
{'address': 'address value',
 'state': 'state value',
 'year': {'first': {'amounts': 3}, 'second': {'basic': 'hello', 'information': 'hello world'}}}

这篇关于我想在项目类中添加项目类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆