[Scrapy item e item Carregadeira] e usar Carregadeira básicos e Item (carregador de projeto) O uso básico

                                        A utilização básica do item

        Item é um lugar para armazenar dados de configuração, scrapy resultados analíticos podem ser devolvidos em um dicionário, mas a falta de estrutura no dicionário Python, que foi muito conveniente em grande sistema de réptil. Categoria do artigo fornece dicionários API, e pode ser facilmente campo é declarado, muitos outros componentes podem informações Scrapy item utilizado. Os métodos básicos são os seguintes:

import scrapy
class MovieItem(scrapy.Item):
    # define the fields for your item here like:
    name = scrapy.Field()

        objeto de campo usado para especificar os metadados para cada campo. A função de serialização LAST_UPDATED exemplo acima é designada como str, pode ser especificado metadados, cada metadados mas significado diferente para os diferentes componentes.

        ponto de acesso de valor, como o acesso aos valores de dicionário da seguinte forma:

#设置值的方法
product['last_updated'] = 'today'

#访问值得方法

>>> product['last_updated']
today

>>> product.keys()
['price', 'name']

>>> product.items()
[('price', 1000), ('name', 'Desktop PC')]

>>> product.get('name')
Desktop PC

                                      A utilização básica do item carregador

        Item de carregador fornece um método muito conveniente de gerar item para nós. Item fornece um recipiente para os dados capturados, e Item carregador permite-nos entrar muito facilmente ser preenchido para o recipiente.

       Carregadeira Item (carregador de projeto), o que significa que quando um monte de tempo do projeto, extraindo centenas de campos, é muito difícil de fazer manutenção.
       Portanto scrapy fornece um tal ItemLoader recipiente, no interior do recipiente pode ser configurado em regra esta extracção em cada campo do item. Os dados originais podem ser analisados por função, ea atribuição de campo Item, muito conveniente. Web site da referência: https: //blog.csdn.net/zwq912318834/article/details/79530828
       assim olhada Item e Itemloader: Oferta item para salvar os dados de contêineres garra, e fornecer um mecanismo para recipientes de enchimento Itemloader.
       Itemloader fornece um mecanismo flexível e eficiente que pode mais facilmente ser aranha ou formato de fonte (HTML, XML, etc ) para expandir e reescrever, mais fácil de manter, especialmente na análise de regras complexas, especialmente inúmeras vezes.

 

No uso geral, uso no arquivo rastreador py:

from scrapy.loader import ItemLoader
#从items中调用Product的类
from myproject.items import Product
def parse(self, response):
    #ItemLoader中的参数包含两个参数,第一个是引入的类,第二个是浏览器响应的结果
    l = ItemLoader(item=Product(), response=response)
    #这个是三种字段的添加方法
    l.add_xpath('name', '//div[@class="product_name"]')
    l.add_css('stock', 'p#stock]')
    l.add_value('last_updated', 'today') # you can also use literal values
    #添加load_item()来提交字段
    return l.load_item()填充到容器中

Em item.py pode personalizar campos:

Há duas maneiras, primeiro é adicionar uma classe personalizada no item Itemloader

from scrapy.loader import ItemLoader
#Identity、TakeFirst、Join、Compose、MapCompose、SelectJmes都是内置的处理器
from scrapy.loader.processors import TakeFirst, MapCompose, Join

class ProductLoader(ItemLoader):
    #定义默认的ItemLoader.default_input_processor和ItemLoader.default_input_processor
    default_output_processor = TakeFirst()
    #通过_in和_out后缀来定义输入和输出处理器
    name_in = MapCompose(unicode.title)
    name_out = Join()
    price_in = MapCompose(unicode.strip)

A segunda maneira é adicionar o arquivo do item Métodos de campo definição

import scrapy
#Identity、TakeFirst、Join、Compose、MapCompose、SelectJmes都是内置的处理器
from scrapy.loader.processors import Join, MapCompose, TakeFirst
from w3lib.html import remove_tags

def filter_price(value):
    if value.isdigit():
        return value

class Product(scrapy.Item):
    name = scrapy.Field(
        input_processor=MapCompose(remove_tags),
        output_processor=Join(),
    )
    price = scrapy.Field(
        input_processor=MapCompose(remove_tags, filter_price),
        output_processor=TakeFirst(),
    )

 

Publicado 56 artigos originais · ganhou elogios 2 · vê 30000 +

Acho que você gosta

Origin blog.csdn.net/fan13938409755/article/details/104838136
Recomendado
Clasificación