Lo más molesto al investigar airdrops no es pasar de página, sino que el sitio cambie de diseño a mitad de la búsqueda: todos los selectores dejan de funcionar y el script muere en el acto.
Probé Scrapling 0.5.1, una biblioteca de scraping para Python. Superó las seis pruebas; la segunda fue la más valiosa.
Simulé personalmente un rediseño de la página de prueba: cambié todos los nombres de las clases y añadí un div contenedor. Los selectores CSS normales no encontraron nada. El selector adaptativo volvió a localizar el elemento por su identificador: encontró 1 resultado y el texto del contenido coincidía palabra por palabra.
Los resultados de las cinco pruebas restantes:
La extracción normal devolvió 200; tardó 1,73 segundos y encontró 10 resultados con CSS y otros 10 con XPath.
Spider procesó dos páginas en paralelo: tardó 2,0 segundos, obtuvo 20 resultados, no hubo errores y el JSON se guardó correctamente en disco.
La salida en Markdown tiene 3019 caracteres y queda limpia, pero hay que instalar también scrapling[rag]; la instalación básica no lo incluye.
Con una sola línea de extract en la CLI salen los resultados. Se encontró con un timeout en medio, pero reintentó automáticamente y funcionó a la segunda.
Modo sigiloso: en una página con JS, el scraping normal dio 200 pero 0 resultados en 0,7 segundos; todo el contenido dependía de la inyección de JS. Al cambiar al modo sigiloso: 200 / 10 resultados, 6,3 segundos. En la página de demostración de Cloudflare, solve_cloudflare=True: 200, 18 enlaces, 90,6 segundos. Lento, pero lo superó de verdad; no usó servicios externos para resolver captchas.
Dos problemas; mejor decirlo de antemano:
Uno: no incluye IPs proxy; si bloquean la IP, tendrás que rotarlas por tu cuenta.
Dos: después de instalarlo, al ejecutar el modo sigiloso puede faltar chromium-1248. Basta con ejecutar python -m patchright install chromium; se instala en 44 segundos.
¿Para qué lo uso? Normalmente vigilo $BNB las páginas de proyectos y los anuncios de airdrops en la cadena. Cada vez que rediseñan una página, hay que reescribir los selectores; esta biblioteca vuelve a encontrar los elementos por sí sola después del rediseño, y eso me ahorra todo el tiempo que pasaría arreglando scripts una y otra vez.
Puedo esperar 90 segundos para superar Cloudflare.