SCRAPY_part4_Items
来源:互联网 发布:程序员的技术栈 编辑:程序博客网 时间:2024/06/06 18:31
用 scrapy 的主要目的是从非结构性的数据源–网页中提取结构性的数据。scrapy 可以将抽取的数据以字典的形式返回。虽然使用字典很简单方便,但是字典形式缺乏结构性,如发生拼写错误,或返回缺乏一致性的数据,尤其是有很多 spider 的大工程中。Scrapy 提供了 Item 类来定义通用的输出数据格式。Item 对象是一个简单的容器,来盛放抽取的数据。它提供了
dictionary-like
的 API 及简便的语法来声明它可用的 fields。#一个简单的item类定义,Item 提供一个 dictionary-like API. Product() 类似于dict()....#Field 类没有特别的属性或方法。使用一个单独的类用于支持基于 class 属性的 item 声明语法。可以定义对象的元数据。比如: last_updated = scrapy.Field(serializer=str)class Product(scrapy.Item):name = scrapy.Field()price = scrapy.Field()stock = scrapy.Field()last_updated = scrapy.Field(serializer=str)#Item基本操作(类似dict)product = Product(name='Desktop PC', price=1000)>>>product['name']Desktop PC>>>product.get('last_updated', 'not set')not set# 没定义这个Field>>> product['lala'] Traceback (most recent call last):>>> product.keys()['price', 'name']>>> product.items()[('price', 1000), ('name', 'Desktop PC')]#获取 Item 的 Field>>> product.fields {'last_updated': {'serializer': <class 'str'>}, 'name': {}, 'price': {}, 'stock': {}}#复制Item>>> product2 = Product(product)>>> print product2Product(name='Desktop PC', price=1000)# 继承:您可以通过声明原始项目的子类来扩展项目(以添加更多字段或更改某些字段的某些元数据)。#添加属性class DiscountedProduct(Product): discount_percent = scrapy.Field(serializer=str) discount_expiration_date = scrapy.Field()# 修改原来的属性class SpecificProduct(Product): name = scrapy.Field(Product.fields['name'], serializer=my_serializer)
阅读全文
0 0
- SCRAPY_part4_Items
- Toj 3777 Function Problem
- Java培训总结-第1周
- bzoj1026 [SCOI2009]windy数
- opencv3/C++视频背景建模
- HTML 5概述
- SCRAPY_part4_Items
- 长期失眠如何调理?经常熬夜的朋友的福音来了。
- AMH面板彻底删除网站的方法
- shell版俄罗斯方块
- 变量名与变量地址的一些理解
- Spring框架 WEB-INF下访问login.jsp
- div中嵌套input 以及input默认样式的清除
- android api 26 ActivityManagerNative类被弃用。代理类ActivityManagerProxy已经被删除。改用AIDL方式。
- 3.1.1 Agri-Net 最短网络