Scrapy desde la entrada hasta el abandono 4 - uso de tuberías

Uso de oleoducto Scrapy

Inserte la descripción de la imagen aquí

objetivo de aprendizaje:
  1. Domine el uso de tuberías chatarra (pipelines.py)

Antes, aprendimos el uso básico de la tubería en la sección de "Introducción a scrapy", y luego aprendemos más sobre el uso de la tubería scrapy.

1. Métodos de uso común en canalización:

  1. process_item (yo, artículo, araña):
    • Funciones que deben estar en la clase de canalización
    • Realizar el procesamiento de datos de artículos
    • Debe devolver el artículo
  2. open_spider (self, spider): se ejecuta solo una vez cuando se inicia la araña
  3. close_spider (self, spider): ejecutar solo una vez cuando la araña está cerrada

2. Modificación del archivo de canalización

Continuar mejorando el rastreador wangyi y mejorarlo en el código pipelines.py

import json
from pymongo import MongoClient

class WangyiFilePipeline(object):
    def open_spider(self, spider):  # 在爬虫开启的时候仅执行一次
        if spider.name == 'itcast':
            self.f = open('json.txt', 'a', encoding='utf-8')

    def close_spider(self, spider):  # 在爬虫关闭的时候仅执行一次
        if spider.name == 'itcast':
            self.f.close()

    def process_item(self, item, spider):
        if spider.name == 'itcast':
            self.f.write(json.dumps(dict(item), ensure_ascii=False, indent=2) + ',\n')
        # 不return的情况下,另一个权重较低的pipeline将不会获得item
        return item  

class WangyiMongoPipeline(object):
    def open_spider(self, spider):  # 在爬虫开启的时候仅执行一次
        if spider.name == 'itcast':
        # 也可以使用isinstanc函数来区分爬虫类:
            con = MongoClient(host='127.0.0.1', port=27017) # 实例化mongoclient
            self.collection = con.itcast.teachers # 创建数据库名为itcast,集合名为teachers的集合操作对象

    def process_item(self, item, spider):
        if spider.name == 'itcast':
            self.collection.insert(item) 
            # 此时item对象必须是一个字典,再插入
            # 如果此时item是BaseItem则需要先转换为字典:dict(BaseItem)
        # 不return的情况下,另一个权重较低的pipeline将不会获得item
        return item  

3. Abra la tubería

Abra la canalización en settings.py

......
ITEM_PIPELINES = {
    'myspider.pipelines.ItcastFilePipeline': 400, # 400表示权重
    'myspider.pipelines.ItcastMongoPipeline': 500, # 权重值越小,越优先执行!
}
......

No olvide activar la base de datos mongodb sudo service mongodb start
y ver la base de datos en mongodbmongo

Pensando: puede abrir varios canales en la configuración, ¿por qué necesita abrir varios canales?

  1. Diferentes canalizaciones pueden procesar diferentes datos de rastreadores, que se distinguen por la propiedad spider.name
  2. Diferentes canalizaciones pueden realizar diferentes operaciones de procesamiento de datos en uno o más rastreadores, como uno para la limpieza de datos y otro para el almacenamiento de datos.
  3. La misma clase de canalización también puede procesar datos de diferentes rastreadores, que se distinguen por la propiedad spider.name

4. Puntos a tener en cuenta al utilizar la canalización

  1. Debe activarse en la configuración antes de su uso
  2. La clave de la tubería en la configuración indica la posición (es decir, la posición de la tubería en el proyecto se puede personalizar) y el valor indica la distancia al motor. Cuanto más cerca estén los datos, antes pasarán los datos: cuanto menor sea el valor de peso, la primera ejecución
  3. Cuando hay varias canalizaciones, el método process_item debe devolver el elemento; de lo contrario, los datos recuperados por la última canalización serán Ninguno.
  4. El método process_item en la canalización debe estar presente; de ​​lo contrario, el artículo no se puede aceptar ni procesar
  5. El método process_item acepta el elemento y la araña, donde la araña representa la araña que está pasando actualmente el elemento
  6. open_spider (araña): se puede ejecutar una vez cuando se inicia el rastreador
  7. close_spider (araña): se puede ejecutar una vez cuando el rastreador está cerrado
  8. Los dos métodos anteriores se utilizan a menudo para la interacción entre el rastreador y la base de datos. La conexión a la base de datos se establece cuando se inicia el rastreador y la conexión a la base de datos se desconecta cuando se cierra el rastreador.

resumen

  • La canalización puede realizar la limpieza y el almacenamiento de datos, y puede definir varias canalizaciones para realizar diferentes funciones. Hay tres métodos
    • process_item (self, item, spider): realiza el procesamiento de los datos del artículo
    • open_spider (self, spider): se ejecuta solo una vez cuando se inicia la araña
    • close_spider (self, spider): ejecutar solo una vez cuando la araña está cerrada

Este es el final, si te ayuda, bienvenido a gustar y seguir, tus me gusta son muy importantes para mí

Supongo que te gusta

Origin blog.csdn.net/qq_45176548/article/details/111991230
Recomendado
Clasificación