【Scrapy】Items容器
来源:互联网 发布:unity3d敌人巡逻 编辑:程序博客网 时间:2024/05/17 22:46
Items
Item对象是种简单的容器,保存了爬取到的数据。其提供了类似于字典的API以及用于声明可用字段的简单语法。
声明Item
Item使用简单的class定义语法以及Field对象来声明。
import scrapyclass 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 PCproduct.get('name')>>>Desktop PCproduct['price']>>>1000product['last_updated']>>>KeyErrorproduct.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']>>>todayproduct['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字典。
0 0
- 【Scrapy】Items容器
- scrapy - 3.items
- scrapy学习笔记--Items
- Scrapy学习笔记(4)---Items
- scrapy 中 ImportError: No mudle name items
- Scrapy爬虫入门教程六 Items(项目)
- Scrapy ImportError: No module named items
- python scrapy crawl csdnblog出现importError:No modul named items
- python scrapy 爬虫ImportError: No module named items
- 跟我学系列,走进Scrapy爬虫(五)聊一聊Items
- Scrapy学习笔记V--Items 爬虫数据的存储.数据模板
- scrapy爬虫实例w3school报错ImportError: No module named w3school.items
- 使用scrapy爬取stl容器的时间复杂度
- scrapy
- Scrapy
- scrapy
- Scrapy
- Scrapy
- C# XML SelectNodes/SelectSingleNode
- centos6安装GitLab
- Linux文件系统管理
- CentOS防火墙配置
- MyEclipse
- 【Scrapy】Items容器
- LoadModule php5_module 参数和 PHPIniDir参数导致apache不能启动和出错的
- Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用
- Fetching gem metadata from https://rubygems.org/..解决方案
- PHP之——DES加解密函数 与JAVA兼容(插曲)
- CSS--补充
- Tomcat 报错 8080被占用
- hdu 1106 排序
- Android 开源框架Universal-Image-Loader完全解析(二)--- 图片缓存策略详解