Item
爬取的主要目標(biāo)就是從非結(jié)構(gòu)性的數(shù)據(jù)源提取結(jié)構(gòu)性數(shù)據(jù)持偏,例如網(wǎng)頁驼卖。scrapy提供Item
類來滿足這樣的需求。
Item
對象是種簡單的容器鸿秆,保存了爬取到的數(shù)據(jù)酌畜。提供了類似于字典的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對象指明了每個字段的元數(shù)據(jù)(metadata)桥胞。例如下面例子中last_updated
中指明了該字段的序列化函數(shù)。
可以為每個字段指明任何類型的元數(shù)據(jù)考婴。Field
對象對接受的值沒有任何限制贩虾。也正是因為這個原因,文檔也無法提供所有可用的元數(shù)據(jù)的鍵(key)參考列表沥阱。Field
對象中保存的每個鍵可以由多個組件使用缎罢,并且只用這些組件知道這個鍵的存在,可以根據(jù)自己的需求,定義使用其他的Field
鍵策精。設(shè)置Field
對象的主要目的就是在一個地方定義好所有的元數(shù)據(jù)舰始。一般來說,那些依賴某個字段的組件肯定使用了特定的鍵(key)咽袜。
需要注意的是丸卷,用來聲明item的Field
對象并沒有被賦值class屬性。不過可以通過Item.fields
屬性進(jìn)行訪問询刹。
以上就是所有您需要知道的如何聲明item的內(nèi)容了谜嫉。