码迷,mamicode.com
首页 > 其他好文 > 详细

【Scrapy】Items容器

时间:2015-05-27 13:59:41      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:items

Items

Item对象是种简单的容器,保存了爬取到的数据。其提供了类似于字典的API以及用于声明可用字段的简单语法。

声明Item

Item使用简单的class定义语法以及Field对象来声明。

import scrapy
class Product(scrapy.Item): #Product类继承自Item类
    name = scrapy.Field()
    price = scrapy.Field()
    stock = scrapy.Field()
    last_updated = scrapy.Field(serializer=str) #last_updated指明了该字段的序列化函数

Item字段(Item Fields)

Field对象指明了每个字段的元数据(metadata)

可以为每个字段指明任何类型的元数据。**Field对象对接受的值没有任何限制。**Field对象中保存的每个键可以由多个组件使用,并且只有这些组件知道这个键的存在。

设置Field对象的主要目的就是在一个地方定义好所有的元数据。一般来说,那些依赖某个字段的组件肯定使用了特定的键(key)。必须查看组件相关的文档,查看其用了哪些元数据键(metadata key)。

与Item配合

创建item

product = Product(name=‘Desktop PC’,price=1000)
print product
>>>Product(name=‘desktop PC‘,price=1000)

获取字段的值

product[‘name‘]
>>>Desktop PC
product.get(‘name‘)
>>>Desktop PC
product[‘price‘]
>>>1000

product[‘last_updated‘]
>>>KeyError
product.get(‘last_updated‘,‘not set’)
>>>not set

‘name‘ in product
>>>True
‘last_updated‘ in product
>>>False
‘last_updated‘ in product.fields
>>>True

设置字段的值

product[‘last_updated‘] = ‘today‘
product[‘last_updated‘]
>>>today

product[‘lala‘] = ‘test‘
>>>KeyError

获取所有获取到的值

product.keys()
>>>[‘price‘,‘name‘]

product.items()
[(‘price‘,1000),(‘name‘,‘Desktop PC‘)]

其他任务

复制item

product2 = Product(product)
print product2
>>>Product(name=‘Desktop PC‘,price=1000)
product3 = product2.copy()
print product3
>>>Product(name=‘Desktop PC‘,price=1000)

根据item创建字典(dict)

dict(product)
{‘price‘:1000,‘name‘:‘Desktop PC‘}

根据字典(dict)创建item

Product({‘name‘:‘Laptop PC‘,‘price‘:1500})
>>>Product(price=1500,name=‘Laptop PC‘)
Product({‘name‘:‘Laptop PC‘,‘lala‘:1500})
>>>KeyError

扩展Item

可以继承原来的item类来扩展新的item类

Item对象

class scrapy.item.Item([arg])

返回一个根据给定的参数可选初始化的item。
Item相对dict唯一额外添加的属性是fields
一个包含了item所有声明的字段的字典,而不仅仅是获取到的字段

字段(Field)对象

class scrapy.item.Field([arg])

Field仅仅是内置的dict类的一个别名,并没有提供额外的方法或者属性。换句话说 Field对象完完全全就是Python字典。

【Scrapy】Items容器

标签:items

原文地址:http://blog.csdn.net/area_52/article/details/46045115

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!