Item 和 Field
scrapy 提供了item和field两个两个类,用户可以使用这两个类来自定义自己的数据类型来封装和保存结构数据。
创建自定义数据类型
自定义数据一个数据类只需要继承,item类,并且创建一系类Field类的实例对象为类属性即可。
form scrapy import Item,Field
class BookItem(Item):
name = Field()
price = Field()
创建BookItem实例
>>> book = BookItem(name='Needful Tings',price = '45.0')
>>> book
{name='Needful Tings',price = '45.0'}
item 支持字典接口,因此BookItem在使用上和python字典类似。创建实例,对实例增删改查与字典类似。
拓展Item子类
在对已有的数据类BookItem进行拓展的时候,可以继承BookItem定义一个新的类,并在其中添加你需要的字段
例如想要添加一个图书翻译者的信息
class NewBookItem(BookItem):
translator = Field()
Item字段(Item Fields)
Field 对象指明了每个字段的元数据(metadata)。
您可以为每个字段指明任何类型的元数据。 Field 对象对接受的值没有任何限制。也正是因为这个原因,文档也无法提供所有可用的元数据的键(key)参考列表。 Field 对象中保存的每个键可以由多个组件使用,并且只有这些组件知道这个键的存在。您可以根据自己的需求,定义使用其他的Field 键。 设置 Field 对象的主要目的就是在一个地方定义好所有的元数据。 一般来说,那些依赖某个字段的组件肯定使用了特定的键(key)。您必须查看组件相关的文档,查看其用了哪些元数据键(metadata key)。
需要注意的是,用来声明item的 Field 对象并没有被赋值为class的属性。 不过您可以通过Item.fields 属性进行访问。
字段(Field)对象
实际上Field是python 字典的一个子类,并没有提供额外的方法或者属性