
I. ¿Por qué descartar los rastreadores distribuidos?
Participó en la recopilación de datos del antiguo conductor entender, rastreador independiente es como beber té con leche con una pajita - toque una gran cantidad de datos directamente a los calambres en la boca. Marco Scrapy ordinaria puede ejecutar un volumen de datos de unos pocos millones, si cumple con el sitio web anti-escalada despiadado, minutos para enviar su IP en la pequeña habitación negro. Esta vezScrapy-Redis + Proxy IPLa combinación es como tener el dedo de oro en la rueda, poder trabajar de forma distribuida y poder cambiar de chaleco en cualquier momento.
II. Manual de Operaciones para el Despliegue de Clusters Hardcore
Primero, arreglaremos tres servidores (una máquina virtual está bien si no puedes permitírtelo) e instalaremos la base de datos Redis. Aquí está el truco: Scrapy proyectos en todas las máquinassettings.pyTodo tiene que ir acompañado de estas líneas:
REDIS_URL = 'redis://su IP de servidor:6379' SCHEDULER = 'scrapy_redis.scheduler.Scheduler' DUPEFILTER_CLASS = 'scrapy_redis.dupefilter.RFPDupeFilter'
Recuerde colocar el archivo de rastreo en el directoriostart_urlsCambiar a lectura desde Redis:
def start_requests(self).
for url in self.server.lrange('Crawler Task Queue', 0, -1):: yield scrapy.Request(url.decode("utf-8")).
yield scrapy.Request(url.decode("utf-8"))
En tercer lugar, la forma correcta de abrir el proxy IP
Aquí es donde tenemos que sacar a relucir nuestraservicio proxy ipipgoAhora, su API está diseñada para no dar problemas. Añade un middleware a middlewares.py:
importar random
clase ProxyMiddleware.
proxy_list = [
'http://账号:密码@proxy.ipipgo.com:端口'.
Se recomienda utilizar aquí enlaces API generados dinámicamente
]
request.meta['proxy'] = random.choice(proxy_list)
Recordatorio clave: no olvide poner elPunto de reducción de la concurrenciaNo agote el pool de IPs del proxy. Se recomienda abrir 20-30 concurrencias por nodo, en función del tráfico de paquetes comprado.
| escenario de error | Programa de primeros auxilios |
|---|---|
| Aparece el código de estado 429 | Cambio inmediato de IP proxy + reducción de la frecuencia de rastreo |
| Tiempo de espera de la conexión Redis | Comprobar la configuración de disparo + añadir mecanismo de reintento |
IV. Guía para evitar errores sobre el terreno
1. nunca escriba una IP proxy muerta en el script del crawler, use ipipgo'sInterfaz API dinámicaSu familia puede cambiar más de 5000 IPs por minuto.
2. No sea tan testarudo cuando se encuentre con CAPTCHA, configure la política de reintento automático y cambie los paquetes de IP. el pool de IP exclusivas de ipipgo es muy útil en este momento.
3. log recuerde hacer el procesamiento jerárquico, el informe de error relacionado con la IP del proxy un archivo separado, para facilitar la optimización de seguimiento.
V. Blanco común QA
P: ¿Por qué mi nodo de rastreo siempre acapara tareas?
R: Compruebe la configuración del comando BRPOP de Redis, se recomienda utilizar diferentes colas para el triaje de prioridades
P: ¿Qué debo hacer si utilizo una IP proxy o me bloquean?
R: El 80% de la cabecera de la petición no es aleatoria, instala una librería fake_useragent, luego comprueba el manejo de cookies
P: ¿Cómo elijo el paquete adecuado para ipipgo?
R: período de prueba con pago por volumen, estable ejecutar corte paquete mensual. Concurrencia más de 50 elegir piscina dinámica de clase empresarial, hay especialistas para hacer el mantenimiento de IP.
Despotrique final: los rastreadores distribuidos no son balas de plata con ipipgo'sAgente de enrutamiento inteligenteantes de que despegue de verdad. Recuerda actualizar las reglas del crawler regularmente, no dejes que la estrategia anti-crawler se actualice al pozo. Si tienes algún problema de despliegue, puedes dirigirte directamente a su servicio técnico de atención al cliente, la velocidad de respuesta es N veces más rápida que la del agente gratuito...

