scrapy tema (V): extensiones personalizadas

Por extensión scrapy proporciona, podemos escribir una función personalizada, el mecanismo inserta en scrapy

En primer lugar, escribir una simple extensión

Ahora escribimos una serie de extensiones para obtener un recuento total del artículo
, podemos crear unaextensions.py

# Extendsions.py 
# - * - codificación: utf-8 - * - 
de scrapy importación señales
 de scrapy.exceptions importar NotConfigured 

clase StatsItemCount (objeto):
     def  __init__ (self): 
        self.item_count = 0 

    @classmethod 
    def from_crawler (cls, rastreador):
         # instanciar el objeto de extensión 
        ext = cls () 

        # conectan el objeto de extensión a las señales 
        crawler.signals.connect (ext.spider_opened, 
                                señal =signals.spider_opened) 
        crawler.signals.connect (ext.spider_closed, 
                                señal = signals.spider_closed) 
        crawler.signals.connect (ext.item_scraped, señal = signals.item_scraped) 

        # devolver la extensión objeto 
        retorno ext 

    def spider_opened (self, araña) : 
        spider.logger.info ( " ----------- abierto araña% s " , spider.name) 

    def spider_closed (self, araña): 
        spider.logger.info ( " ------ ------ araña cerrado% s "spider.name) 
        spider.logger.info ( "Un total de datos adquiridos {} " .formato (self.item_count)) 

    DEF item_scraped (Self, artículo, Spider): 
        self.item_count + 1 =.
  1. En la from_crawlerseñal de proceso de registro
  2. Escribiendo item_scrapedmétodo, el análisis estadístico fuera todo el artículo
  3. En los spider_closeddatos de salida se arrastró

extensiones abiertas:

# Settings.py 
EXTENSIONES = {
    ' ccidcom.extensions.StatsItemCount ' : 999 , 
}

reptiles ejecutar
scrapy crawl ccidcomSpider

...
 11/21/2019 16:53:23 [ccidcomSpider] INFORMACIÓN: ----------- ccidcomSpider araña abierto
 21/11/2019 16:53:23 [scrapy.extensions.telnet] INFO : Telnet consola escucha en 127.0.0.1:6023 
11/21/2019 16:53:23 [scrapy.core.engine] INFO: Cierre de la araña (terminado)
 21/11/2019 16:53:23 [ccidcomSpider] INFORMACIÓN: - ----------- ccidcomSpider araña cerrada
 11/21/2019 16:53:23 [ccidcomSpider] INFORMACIÓN:一共获取到10条数据
...

Se puede ver claramente, por escrito extensiones en lugar de araña de la escritura, middleware, todo el proyecto más caos, buena escalabilidad

Dos, scrapy de expansión integrada

1. La extensión de documento estadísticas

scrapy.extensions.logstats.LogStats
estadísticas de registro

2. La extensión núcleo información estadística

scrapy.extensions.corestats.CoreStats
principales estadísticas de información estadística deberá girar LogStats, esta extensión es válida

3. telnet depuración extensiones

scrapy.extensions.telnet.TelnetConsole
proporcionar la depuración de reptil telnet, diciendo más sobre esto en el reptil después de la puesta

4. Monitoreo extendido uso de la memoria

scrapy.extensions.memusage.MemoryUsage
uso de la memoria de extensión de monitorización, esta extensión no es compatible con Windows

  1. Cuando está cerrado Araña Araña excede de un cierto valor
  2. notificación por correo electrónico Enviar supera un cierto valor

Los valores de configuración:
MEMUSAGE_LIMIT_MB: reptiles límite de tamaño, alcanza el rastreador cerrado
MEMUSAGE_WARNING_MB: advertencia tamaño de la memoria en el pico de la dirección de correo
MEMUSAGE_NOTIFY_MAIL: un correo electrónico de notificación de dirección
MEMUSAGE_CHECK_INTERVAL_SECONDS: intervalo de detección, en cuestión de segundos

5. Extensión de memoria de depuración

scrapy.extensions.memdebug.MemoryDebugger
Esta extensión recopile la siguiente información:

  1. recolector de basura pitón hace objetos no recoge
  2. Otros objetos no deben ser reservados

Elemento de configuración:
MEMDEBUG_ENABLED: después de abrir la información de la memoria se registra en las estadísticas

6. La extensión automática de cierre de araña

scrapy.extensions.closespider.CloseSpider
alcanza una condición especificada es reptiles cerrados

Elemento de configuración:
CLOSESPIDER_TIMEOUT: araña corriendo hasta un determinado momento se apagará automáticamente, por defecto 0, no cierre
CLOSESPIDER_ITEMCOUNT: reptiles elemento de arrastre llega a un número determinado, a continuación, cierre los reptiles, el valor predeterminado es 0, no está cerca
CLOSESPIDER_PAGECOUNT: reptil que se arrastra páginas para llegar especificar el número de cierres, el valor predeterminado es 0, no está cerca
CLOSESPIDER_ERRORCOUNT: Si el error se produjo durante el período previo a un cierto número de reptiles, reptil está apagado, el valor predeterminado es 0, no se ha cerrado

7. extensión StatsMailer

scrapy.extensions.statsmailer.StatsMailer
enviar un mensaje después de que el agarre es completa, incluyendo la recopilación de estadísticas de

Configuración artículo:
STATSMAILER_RCPTS: la recepción de e-mail

Supongo que te gusta

Origin www.cnblogs.com/qiu-hua/p/12638732.html
Recomendado
Clasificación