本章工作任务
任务1:为什么要使用Item?
任务2:如何使用Item?
任务3:Item的扩展
本章技能目标及重难点
编号 技能点描述 级别
1 为什么要使用Item? ★
2 如何使用Item? ★★★
3 Item的扩展 ★★
注: "★"理解级别 "★★"掌握级别 "★★★"应用级别
本章学习目标
本章开始学习Scrapy的Items,需要同学们学会创建Item及相关扩展的Item应用。
本章学习建议
本章适合有Python爬虫基础的学员学习。
本章内容(学习活动)
5.1为什么要使用Item?
爬取的主要目标就是从非结构性的数据源提取结构性数据,例如网页。Scrapy 提供 Item 类来满足这样的需求。
Item 对象是种简单的容器,保存了爬取到得数据。其提供了类似于词典(dictionary-like)的API以及用于声明可用字段的简单语法。
5.1.1声明 Item
Item 使用简单的 class 定义语法以及 Field 对象来声明,如图5-1所示。
5-1 声明Item
熟悉 Django 的朋友一定会注意到 Scrapy Item 定义方式与 Django Models 很类似, 不过没有那么多不同的字段类型(Field type),更为简单。
5.1.2 Item字段(Item Fields)
Field 对象指明了每个字段的元数据(metadata)。例如下面例子中 last_updated 中指明了该字段的序列化函数。
您可以为每个字段指明任何类型的元数据。Field 对象对接受的值没有任何限制。也正是因为这个原因,文档也无法提供所有可用的元数据的键(key)参考列表。Field 对象中保存的每个键可以由多个组件使用,并且只有这些组件知道这个键的存在。您可以根据自己的需求,定义使用其他的 Field 键。 设置 Field 对象的主要目的就是在一个地方定义好所有的元数据。一般来说,那些依赖某个字段的组件肯定使用了特定的键(key)。您必须查看组件相关的文档,查看其用了哪些元数据键(metadata key)。
需要注意的是,用来声明 item 的 Field 对象并没有被赋值为 class 的属性。不过您可以通过 Item.fields 属性进行访问。
以上就是所有