scrapy Pipeline

Scrapy El Pipeline nos proporciona una función de los datos del proceso, a menudo utilizamos para limpiar los datos de desarrollo / verificación reales, de-duplicación y almacenamiento de datos. Existir en una variedad de proyecto de la tubería, cada Pipeline es una clase, que contiene algún método de transformación del artículo. El artículo será transmitida secuencialmente en el orden en el que la tubería, en el que si un elemento de Pipeline descartó, a continuación, este último no se realiza a la tubería no se recibe el artículo.

Cero, canalización personalizado

Costumbre Pipeline es realmente muy simple, sólo para lograr el método especificado.

  1. process_item (auto, artículo, araña)
  • Explicación: Este método debe ser implementado, el trabajo de procesamiento de datos se lleva a cabo en este método, el método devuelve dict, artículo, Twisted Diferido DropItem o anormal.
  • parámetros:
    • material: Elemento que se arrastró;
    • araña: el tiempo necesario para subir la araña de artículos usados.

Consejo: Si la caída en el método process_item artículo, a continuación, el artículo artículo no se entregará a la tubería posterior.

  1. open_spider (self, araña)
  • Explicación: El rastreador comienza a funcionar, se ejecutará en este método un poco de inicialización, como abrir una base de datos, abra los archivos.
  • parámetros:
    • araña: la araña actualmente en uso
  1. close_spider (self, araña)
  • Explicación: Cuando el rastreador se cierra, este método se ejecutará en una serie de trabajos de seguimiento, tales como el cierre de la base de datos, cierre el archivo y así sucesivamente.
  • parámetros:
    • araña: la araña actualmente en uso
  1. from_crawl (self, rastreador)
  • Explicación: método de clase método devuelve el objeto de instancia Pipeline inicializando el rastreador. Podemos volver a través de todos los componentes de la base Scrapy rastreador.

Una tubería especial

En algunos proyectos que no sólo queremos páginas de rastreo de datos, sino que también se arrastra archivos o imágenes, y guardarlos localmente. Entonces tenemos que utilizar Scrapy especial de Pipeline: FilesPipeline y ImagesPipeline, tienen algunos de los mismos métodos y estructura, llamamos a esto Pipeline es MediaPipeline. FilesPipeline ImagesPipeline y contienen las siguientes características:

  • Evitar la duplicación de los datos descargados
  • ubicación de almacenamiento designada

ImagesPipeline también contiene las siguientes características:

  • Fotos convierte a formato JPG o en formato RGB
  • generar miniaturas
  • Fotos de límite de descarga de anchura máxima / mínima y la altura

Consejo: método Scrapy Pipeline es para evitar duplicados de la URL del archivo para ser descargado en una cola, y el asociado y Respuesta, evitando así volver a descargar.

  1. FilesPipeline

descarga de archivos de flujo de trabajo FilesPipeline es muy simple, un total de cuatro pasos:

  • Reptil guarda la dirección URL adquirió artículo y no quiere descargar el archivo a file_urls en;
  • rastreador del artículo devuelto en el interior de la tubería;
  • Cuando transferido a la partida para FilesPipeline, file_urls URL se descarga en un planificador incorporado y de descarga. En este momento artículo está bloqueado hasta que tenga que descargar el archivo de descarga es completa o un error, se desbloquea artículo;
  • Después de la descarga se ha completado, el resultado se almacena en los archivos, una lista de archivos, cada tipo de datos dict.
  1. ImagesPipeline

ImagesPipeline se hereda de FilesPipeline, es decir, la mayor parte de sus pasos y FilesPipeline misma. La única diferencia es ImagesPipeline tendrá que descargar las imágenes guardadas en image_urls URL, se completa la descarga, guardar los resultados en imágenes.

Tip: Tubería incluye no sólo estos dos Pipeline especial, porque FilesPipeline y ImagesPipeline es más comúnmente utilizado, así que tuve que explicar aquí. Más construido Pipeline Scrapy se puede ir a la página oficial para ver los documentos específicos.

Tenemos que estar registrado en el archivo settings.py después de terminar de escribir Pipeline, escribiremos Pipeline inyecta en el Scrapy.

ITEM_PIPELINS= {
  '自定义Pipeline 路径':'优先级'
}

En segundo lugar, el resumen

En este artículo principalmente en el conocimiento teórico de la tubería, aunque muy corto, pero este conocimiento es el núcleo del conocimiento de la tubería. La siguiente sección de la tubería utilizará para mostrar a través de la forma de código.

Publicados 204 artículos originales · ganado elogios 101 · Vistas de 350.000 +

Supongo que te gusta

Origin blog.csdn.net/gangzhucoll/article/details/104046855
Recomendado
Clasificación