Scrapy - Itens

Descrição

O processo Scrapy pode ser usado para extrair os dados de fontes, como páginas da web, usando spiders. Scrapy usaItem classe para produzir a saída cujos objetos são usados ​​para reunir os dados extraídos.

Declarando Itens

Você pode declarar os itens usando a sintaxe de definição de classe junto com os objetos de campo mostrados a seguir -

import scrapy 
class MyProducts(scrapy.Item): 
   productName = Field() 
   productLink = Field() 
   imageURL = Field() 
   price = Field() 
   size = Field()

Campos do Item

Os campos do item são usados ​​para exibir os metadados de cada campo. Como não há limitação de valores nos objetos de campo, as chaves de metadados acessíveis não contêm nenhuma lista de referência dos metadados. Os objetos de campo são usados ​​para especificar todos os metadados de campo e você pode especificar qualquer outra chave de campo de acordo com sua necessidade no projeto. Os objetos de campo podem ser acessados ​​usando o atributo Item.fields.

Trabalhando com Itens

Existem algumas funções comuns que podem ser definidas quando você está trabalhando com os itens. Para mais informações, clique neste link .

Estendendo itens

Os itens podem ser estendidos declarando a subclasse do item original. Por exemplo -

class MyProductDetails(Product): 
   original_rate = scrapy.Field(serializer = str) 
   discount_rate = scrapy.Field()

Você pode usar os metadados de campo existentes para estender os metadados de campo adicionando mais valores ou alterando os valores existentes, conforme mostrado no código a seguir -

class MyProductPackage(Product): 
   name = scrapy.Field(Product.fields['name'], serializer = serializer_demo)

Objetos de Item

Os objetos de item podem ser especificados usando a seguinte classe que fornece o novo item inicializado a partir do argumento fornecido -

class scrapy.item.Item([arg])

O Item fornece uma cópia do construtor e fornece um atributo extra que é fornecido pelos itens nos campos.

Objetos de Campo

Os objetos de campo podem ser especificados usando a seguinte classe em que a classe Field não emite o processo ou atributos adicionais -

class scrapy.item.Field([arg])