Cuando el rastreador se encuentra con la IP proxy: ¿cómo jugar a la tarea del millón sin colapsar?
Hacer hermanos de recopilación de datos deben entender, el trabajo duro para escribir un script de rastreo, los resultados sólo se ejecutan en el sitio de destino bloqueado IP, la sensación es como comer fideos no encontraron paquetes de condimentos. En este momentoCola de tareas distribuida + Grupo de IP proxyLa combinación de golpes vendrá muy bien, tomemos Celery + Redis hoy este par de socios de oro que decir.
Clasificación exprés Procesamiento de tareas
Imagínese que dirige una empresa de reparto con millones de paquetes que clasificar cada día. Celery es como ese clasificador inteligente que distribuye automáticamente las entregas de las distintas regiones a varias cintas transportadoras (nodos de trabajadores). Pero hay que tener cuidado:No todos los clasificadores (trabajadores) recogen las entregas en la misma puerta (dirección IP).De lo contrario, el propietario del escenario (el lugar de destino) le echará el cierre en cuestión de minutos.
Es hora de sacar nuestrogrupo de proxy dinámico ipipgoEs como tener diferentes monos (direcciones IP) para cada clasificador. Consulte esta tabla para ver la configuración exacta:
toma | Tipo de agente | Frecuencia de conmutación |
---|---|---|
Recogida ordinaria | efecto dinámico efímero | Cada misión |
Visitas de alta frecuencia | Exclusivo de larga duración | Cambio de día |
restricciones anti-escalada | Sala de planta mixta + residencial | Conmutación inteligente |
El truco del apio contra el encapsulamiento
Entierra un gancho en el decorador de tareas para cambiar automáticamente la IP antes de cada ejecución de la tarea. una castaña:
@tarea(bind=True) def crawl_url(self, url). current_ip = ipipgo.get_proxy() Llama aquí a la API de ipipgo. headers = {'X-Forwarded-For': current_ip} Recuerde añadir un mecanismo de reintento de excepción
Ten cuidado de comerlo como sushi asadoSolicitud de intervalo aleatorioNo envíes peticiones como si llevaras tres días con hambre. Se recomienda añadir rate_limit en la configuración de Celery, por ejemplo, hasta 60 veces por minuto.
Operaciones de motín de almacenamiento de Redis
No basta con almacenar millones de URL en la memoria, aquí te explicamos cómo hacerlo.la Gran Ley de Separación (GLOS)::
- Banco 0: cola a capturar (mediante estructura List)
- Banco 1: Tareas en curso (ordenadas Fijar fecha y hora)
- Banco 2: Cola de reintentos de fallo (estructura hash que contiene los recuentos de reintentos)
La clave está en tomar la huella digital de cada URL y utilizar MD5 para generar un ID único que impida la recogida duplicada. Es como un número de pedido de mensajería para evitar clasificar dos veces el mismo paquete.
Diario de una parada en boxes real
Caí en la trampa el año pasado cuando ayudaba a una empresa de comercio electrónico con el seguimiento de la competencia:
- Ejecutado directamente sin calentamiento en PI, el resultado activó el control del viento
- Un mecanismo de repetición de pruebas demasiado agresivo provoca una avalancha
- Elegir el tipo incorrecto de IP proxy es una pérdida de dinero
sustituido porPaquete de enrutamiento inteligente de ipipgoSólo entonces se soluciona el problema, y su familia puede hacer coincidir automáticamente la sala de servidores o la IP residencial según el sitio web de destino, lo que resulta mucho más sencillo que hacerlo uno mismo.
sesión de preguntas y respuestas
P: ¿Qué debo hacer si la IP de mi proxy no suele ser válida?
R: Elección de apoyofacturación a la cartaEl proveedor de servicios, como el modelo de paquete de tráfico de ipipgo, utilice tanto como pueda sin desperdiciar. Al mismo tiempo, debe establecer un mecanismo para eliminar automáticamente las IP no válidas, de esta manera:
def comprobar_proxy(ip). probar. requests.get('http://check.ipipgo.com', proxies={'http': ip}, timeout=5) except: ipipgo.report_failure ipipgo.report_failure(ip) marca la IP problemática
P: ¿Cómo controlan los costes de las agencias?
R: Tres trucos: ① establecer un número razonable de concurrencia ② distinguir entre recursos estáticos e interfaces dinámicas ③ utilizar laProxy regional dirigido para ipipgoEs como pedir comida para llevar, no hay necesidad de pagar por la entrega en todo el país.
palabras finales
El crawler distribuido es como abrir una cadena de tiendas de té con leche, Celery es la cocina central, Redis es el sistema de distribución, la IP del proxy es la licencia comercial de cada tienda. Si usted es demasiado perezoso para tirar su propia licencia (para mantener el grupo de proxy), sólo tiene que buscar elipipgo¿No huele bien ganar tiempo para desarrollar unos cuantos tés con leche (productos de datos) más con una agencia tan profesional?