scrapy Items

24 篇文章 1 订阅
13 篇文章 1 订阅

scrapy框架-Items

使用的原因: 爬取的主要目标就是从非结构性的数据源提取结构性数据,例如网页。 Scrapy spider可以以python的dict来返回提取的数据.虽然dict很方便,并且用起来也熟悉,但是其缺少结构性,容易打错字段的名字或者返回不一致的数据,尤其在具有多个spider的大项目中。

简介: 为了定义常用的输出数据,Scrapy提供了 Item类 ,其提供了 类似于词典(dictionary-like)的API以及用于声明可用字段的简单语法

一、声明Item

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

import scrapy

class Product(scrapy.Item):
    name = scrapy.Field()
    price = scrapy.Field()
    stock = scrapy.Field()
    last_updated = scrapy.Field(serializer=str)
    

二、Item字段(Item Fields)

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

  • 您可以为每个字段指明任何类型的元数据。 Field` 对象对接受的值没有任何限制。

  • 用来声明item的Field 对象并没有被赋值为class的属性。 不过您可以通过 Item.fields属性进行访问

三、创建Item

#创建Item
item = Product()

四、赋值

#赋值
item['name'] = 'scrapy'
item['price'] = 100

五、获取item对象的值

#获取Item对象的值
print(item.get('name'))
print(item['name'])
print(item.get('price'))
print(item['price'])
import scrapy
#声明Item
class Product(scrapy.Item):
    name = scrapy.Field()
    price = scrapy.Field()
    stock = scrapy.Field()
    last_updated = scrapy.Field(serializer=str)

#创建Item
item = Product()
#赋值
item['name'] = 'scrapy'
item['price'] = 100
#获取Item对象的值
print(item.get('name'))
print(item['name'])
print(item.get('price'))
print(item['price'])

结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4h5JKDtY-1662687363958)(images\20191205152726.png)]

六、其他操作

  • 复制item
>>> product.keys()
['price', 'name']

>>> product.items()
[('price', 1000), ('name', 'Desktop PC')]
  • 根据item创建字典(dict):

    >>> dict(product) # create a dict from all populated values
    {'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}) # warning: unknown field in dict
    Traceback (most recent call last):
        ...
    KeyError: 'Product does not support field: lala'
    ```**加粗样式**
    
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卑微小钟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值