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 =.
- En la
from_crawler
señal de proceso de registro - Escribiendo
item_scraped
método, el análisis estadístico fuera todo el artículo - En los
spider_closed
datos de salida se arrastró
extensiones abiertas:
# Settings.py EXTENSIONES = { ' ccidcom.extensions.StatsItemCount ' : 999 , }
reptiles ejecutarscrapy 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
- Cuando está cerrado Araña Araña excede de un cierto valor
- 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:
- recolector de basura pitón hace objetos no recoge
- 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