La lista definitiva de trucos y consejos de Web Scraping
Anda Miuțescu el 15 Jun 2021
Aunque el web scraping puede parecer fácil en la práctica, hay un montón de trampas con las que el desarrollador no iniciado podría toparse. En lugar de forzarlo hasta quedarse sin proxies no bloqueados, me atrevo a pensar que sería mejor hacer un scraping inteligente, obtener los datos que necesitas y salir sin que nadie se dé cuenta.
La verdadera pregunta es ¿cómo hacerlo? ¿Cómo obtener información sin que te bloqueen la IP, sin toparte con CAPTCHAs, sin recuperar código JavaScript inútil y sin retocar el código del scraper sin cesar? Bueno, no hay una regla de oro a seguir, pero hay mejores prácticas.
Hemos preparado doce consejos para ti. Utilízalos y verás que todos los datos de Internet están a unos pocos clics de distancia.
1. Planificar antes de rascar
Como cualquier proyecto, los trabajos de web scraping resultan mucho más sencillos si se diseña una estrategia clara antes de empezar. En primer lugar, ¿por qué necesita datos? Puede parecer una pregunta obvia, pero la respuesta es decisiva para determinar qué información debe recopilar.
A continuación, ¿de dónde va a sacar la información? La herramienta de scraping debe estar bien adaptada a los sitios a los que tiene que ir, por lo que examinar sus fuentes de datos le ayudará a crear o comprar el programa adecuado para el trabajo.
Tercera pregunta: ¿cómo va a utilizar la información recopilada? Puede procesarla usted mismo, utilizar un programa informático o incluso enviarla a una compleja cadena de distribución. La respuesta será el primer paso para decidir la estructura y el formato de archivo de los datos recopilados.
Hay muchas otras cuestiones e ideas que tienes que resolver, la mayoría de las cuales dependen en gran medida de lo que quieras conseguir. Una cosa es cierta, "medir dos veces, cortar una" es válido para el web scraping.
2. Actuar de forma más humana
Si quieres saber si el visitante de una página web es un humano o un bot, sólo tienes que fijarte en su forma de comportarse. Los bots se mueven a gran velocidad y nunca interactúan con la página a menos que se les indique lo contrario. Como resultado, son fáciles de detectar y bloquear.
Para ayudar al scraper a evitar ser detectado, tienes que enseñarle a actuar más como un visitante normal, un humano. Lo bueno aquí es que las personas actúan de muchas maneras diferentes, por lo que tienes mucha libertad a la hora de codificar. Aquí tienes algunas acciones que te sugerimos que añadas:
- Añada intervalos aleatorios de inactividad, como si un humano estuviera leyendo el contenido de la página. Un retraso de 5 a 10 segundos funciona bien.
- Navegue por las páginas en forma de árbol. Si estás explorando varias páginas secundarias, pasa siempre por la página principal. Imitará a una persona que hace clic en una página, luego vuelve atrás, luego hace clic en la siguiente, y así sucesivamente.
- Haz que el bot haga clic en cosas al azar de vez en cuando. Eso es algo que hace toda la gente y no sólo yo, ¿verdad?
De todos modos, la razón por la que tu bot tiene que actuar de una determinada manera es porque el sitio web podría estar monitorizando y registrando su actividad. Pero, ¿y si el sitio web no pudiera seguir la pista del bot? Lee el siguiente punto para obtener la respuesta.
3. Rote sus proxies
Utilizar un proxy para asegurarte de que tu IP real no se bloquea es algo obvio. También lo es conseguir un proxy de una ubicación geográfica específica para acceder a contenidos restringidos. Pero los proxies pueden hacer mucho más por ti con las herramientas adecuadas.
En este momento, la herramienta que necesitas es un servidor para rotar tu pool de proxies. Con él, cada petición que envías se asigna a una IP aleatoria dentro del pool y se envía al objetivo. De esta forma, puedes raspar un sitio web tanto como quieras y cada petición parecerá que procede de un lugar y una persona diferentes.
Además, los proxies rotatorios garantizan que si una IP se bloquea, no te quedarás bloqueado hasta que cambies manualmente de proxy. Una petición puede fallar, pero las demás no. Una buena herramienta también reintentará cualquier intento fallido, por ejemplo, WebScrapingAPI reintenta las llamadas a la API fallidas para asegurarse de que no hay agujeros en su base de datos.
Para obtener los mejores resultados posibles, deberás utilizar proxies residenciales rotativos. Las IPs residenciales son las menos propensas a ser detectadas o bloqueadas y al rotarlas, haces que el scraper sea aún más difícil de detectar. Tenga en cuenta que esto puede ser exagerado a veces. Si no te enfrentas a contramedidas anti-bot difíciles, los proxies rotatorios de centro de datos pueden hacer el trabajo igual de bien por menos dinero.
4. Utilizar un navegador headless
Un navegador headless es igual que uno normal, salvo que no tiene interfaz gráfica de usuario. Para navegar por la web con uno, tendrás que usar una interfaz de línea de comandos.
Definitivamente debe añadir un navegador sin cabeza a la línea de raspado web y los sitios web dinámicos son la razón. Hoy en día, muchos sitios utilizan Javascript para ofrecer una mejor experiencia de usuario a los visitantes. El ejemplo más sencillo es cambiar el tamaño de los elementos de la página para que se ajusten bien a la resolución de pantalla del visitante.
El problema es que el preciado HTML está oculto tras código Javascript. Para llegar a él, tendrás que ejecutar el JS. Un scraper normal no puede hacerlo, pero todos los navegadores sí.
Por lo tanto, sin un entorno de navegador, la herramienta de raspado no podrá recopilar datos de ningún sitio web que utilice Javascript, que es la mayoría en este momento, o al menos la mayoría que importa.
Si estás construyendo un scraper desde cero, te recomiendo que pruebes Puppeteer, aquí tienes algunos detalles sobre lo que hace y cómo usarlo.
5. Ciclo Cabeceras User-Agent
User-Agent es el nombre de una cabecera de petición HTTP que indica al sitio web que está visitando qué navegador y sistema operativo está utilizando. En cierto modo, los sitios web utilizan esta cabecera para saber más sobre quién los visita. Es muy útil para las analíticas y, de paso, para detectar bots.
Este es el aspecto que puede tener una cadena de agente de usuario:
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0
Hay tres situaciones principales que debes evitar:
- No tener ningún agente de usuario. La mayoría de los scrapers no usan ninguno, lo cual es sospechoso y una buena forma de anunciar que son bots. Asegúrate de que envías cabeceras de aspecto normal con cada solicitud.
- Tener un agente de usuario obsoleto. Con cada nueva actualización, los navegadores suelen cambiar el encabezado. Así que, si tu lista contiene un user-agent para Mozilla pero han tenido una actualización y lo han cambiado, el sitio web que visitas puede darse cuenta de que algo huele mal.
- Usando la misma cabecera para cada petición. Podrías usar el user-agent normal para tu navegador actual, pero resultaría en cientos de peticiones diferentes, viniendo de diferentes IPs teniendo exactamente la misma huella digital. Es un gran engaño.
Aquí tienes un consejo extra sobre el tema: prueba a utilizar el user-agent Googlebot. Por supuesto, cualquier sitio web quiere ser indexado, así que deja a los rastreadores de Google a su aire. Una advertencia, sin embargo: sus bots también tienen IPs y comportamientos específicos, por lo que el user-agent por sí solo no es garantía de éxito.
6. Añadir funcionalidades anti-CAPTCHA
Si estás haciendo un buen scraping, no deberías encontrarte con CAPTCHAs salvo en contadas ocasiones. Aún así, si lo haces, es una gran molestia, ya que podría detener tu scraper en seco o devolver datos falsos (el código de la página CAPTCHA).
El plan de batalla anti-CAPTCHA tiene dos partes: prevención y tratamiento. Deberías centrarte principalmente en la prevención, ya que es con diferencia la opción más eficaz. Esto es lo que debe hacer:
- Utiliza proxies para que parezca que tus peticiones proceden de fuentes distintas.
- Cambia las cabeceras de tus peticiones (especialmente el user-agent). De lo contrario, puede ser detectado a pesar de utilizar varias IPs.
- Ejecute el código Javascript de la página. Un navegador headless es tu mejor opción. Muchos sitios lanzan CAPTCHAs a cualquier visitante que no ya que es un comportamiento inusual.
Así que, esencialmente, usa los consejos #3, #4 y #5.
Si el raspador sigue teniendo problemas, necesitará un solucionador de CAPTCHA. Al elegir una herramienta de raspado web, asegúrese de que la que elija tenga esta función incorporada. De lo contrario, es técnicamente posible integrar un solucionador usted mismo, pero eso significa codificación adicional y pérdida de tiempo adicional. Para que lo sepas, nuestra API tiene esta funcionalidad, no es que se encuentre con muchos CAPTCHAs en primer lugar.
7. Haga una lista de URL
Cuando empieces un trabajo de scraping, probablemente recopilarás una lista de URLs con información valiosa. He aquí una idea: en lugar de limitarse a enviar las URL al scraper, conserve una lista y marque todos los enlaces que ya haya rastreado. Para mayor claridad, también puedes conservar los datos raspados con la URL.
La razón es sencilla: si tu ordenador se estropea o se produce algún imprevisto, sabrás qué datos tienes, lo que te evitará tener que volver a buscarlos.
Nuestro consejo es que escribas un script para el registro de extracción de datos. Actualizar la lista manualmente supone mucho trabajo y, de todas formas, no podrás seguir el ritmo del bot.
8. Aprender estructuras de página
Naturalmente, recopilar más datos lleva más tiempo. Por lo tanto, una forma de aumentar la eficacia es determinar exactamente qué información debe recopilar el scraper. En teoría es fácil, pero cada sitio y cada página web son únicos. Para reducir la sobrecarga y ahorrar tiempo, hay que aprender algunas cosas sobre cómo están estructuradas las páginas de destino.
Así se hace:
- Ir a la página;
- Haga clic con el botón derecho en el texto que desee y pulse Inspeccionar elemento;
- Observe cómo está anidada esa información, en qué clases está y bajo qué etiqueta;
- Busque patrones estructurales entre otras páginas de interés. Lo más probable es que puedas crear un script que reúna toda la información necesaria de todo el sitio web.
Después de seguir estos pasos, le resultará mucho más fácil extraer sólo los detalles que necesita. La ventaja es que ya no tendrás que lidiar con HTML irrelevante que abarrota tus documentos.
Comprender el diseño es especialmente útil para obtener información sobre productos. Todas las páginas de productos de un mismo sitio web tendrán una estructura similar, si no idéntica. Encuentra la lógica y podrás extraer y analizar mucho más rápido.
9. Añadir un retardo entre solicitudes
El objetivo de un web scraper es recopilar datos más rápido de lo que lo haría un ser humano. Lo entendemos, pero la velocidad tiene un efecto secundario no deseado: se ve claramente que las solicitudes las envía un bot.
Recuerda lo que dijimos sobre actuar como un visitante normal: si el scraper destaca, es mucho más probable que sea bloqueado. Pero no te preocupes, todo lo que tienes que hacer es añadir retardos aleatorios cuando utilices la misma IP para varias visitas concurrentes o sucesivas.
Recuerda: haz esto cuando uses el mismo proxy. Si cambias la IP y las cabeceras después de cada petición, el retardo no debería ser necesario. Sin embargo, si has iniciado sesión con una IP, deberías quedarte con esa, lo que significa que también necesitarás los retardos.
Asegúrate de que el temporizador es ligeramente diferente, para que los retrasos sean aleatorios. Algo entre 5 y 10 segundos debería funcionar bien.
10. Páginas importantes en caché
En algunos casos, querrás volver a visitar las páginas que has raspado previamente para obtener otro poco de información. En lugar de hacer eso, guarda en caché la página en la primera visita y ya tendrás todos los datos guardados.
Incluso con el raspador web más avanzado, existe la posibilidad de que el bot no obtenga datos en el primer intento, e incluso si lo hace, seguirías desperdiciando esfuerzos. Sólo tienes que capturar todo el HTML de una sola vez y luego puedes extraer cualquier información que necesites de la versión guardada.
Por ejemplo, puede almacenar en caché una página de producto para tenerla siempre a mano. Si hoy necesitas las especificaciones del producto, pero mañana puede que quieras el precio, los datos ya están recogidos, esperando a ser procesados.
Pero ten en cuenta que esto funciona con información estática. Si lo que quieres son los precios de las acciones, tendrás que seguir extrayendo datos nuevos, ya que la versión almacenada en caché quedará obsoleta rápidamente.
11. Cuidado al iniciar sesión
Los datos que necesitas pueden estar ocultos tras una página de inicio de sesión. Me vienen a la cabeza las plataformas de redes sociales. Claro que puedes conseguir algunos fragmentos de contenido sin una cuenta, pero es más laborioso y puede que quieras algo que sólo sea visible si formas parte de un grupo o una lista de amigos. En resumen, puede que necesites iniciar sesión y eso conlleva algunos problemas.
Todos los usuarios del sitio web que tengan una cuenta deben aceptar sus Condiciones de servicio. En estos términos, puede haber una cláusula que prohíba específicamente el uso de bots, herramientas automatizadas o raspadores web. En este caso, la extracción de datos iría claramente en contra de las normas que el usuario aceptó.
Otro punto a tener en cuenta es que, si bien los sitios web pueden no estar extremadamente atentos a los visitantes no registrados, prestan más atención a las cookies enviadas por los usuarios registrados. Así que, en esencia, más ojos estarán puestos en tu bot. Un comportamiento claro del bot o el envío de cookies reveladoras tienen aún más probabilidades de hacer que su scraper sea bloqueado.
Lo que debes hacer:
- Lee atentamente las Condiciones del servicio y asegúrate de que no vas en contra de ellas.
- Asegúrate de que sigues todos los demás consejos de este artículo, especialmente los relativos a los proxies, el comportamiento humano, el renderizado de JS y las cabeceras de las peticiones.
12. Evitar causar daños al sitio web
A la mayoría de los administradores de sitios web no les gusta tener robots en sus páginas. Para algunos, los bots son una pequeña molestia, para otros, un gran peligro. El simple hecho es que los hackers y otros malintencionados utilizan bots para causar problemas y travesuras, como colapsar sitios web o intentar robar datos confidenciales.
Aunque tus intenciones sean totalmente amistosas, puedes causar problemas accidentalmente. Una gran cantidad de solicitudes simultáneas puede hacer que el servidor se caiga, así que aquí tienes algunas buenas prácticas para asegurarte de que no dejas caos a tu paso:
- Reduzca el número de peticiones para evitar que se bloquee todo el sitio web;
- Lea el archivo Robots.txt, que debería explicar qué acciones pueden realizar los robots. No es un documento legalmente vinculante, pero expresa los deseos del propietario del sitio.
- Ten cuidado con el uso que haces de los datos extraídos. Tomar contenidos y volver a publicarlos, por ejemplo, es perjudicial e ilegal, ya que están protegidos por derechos de autor.
- Siempre que sea posible, pida permiso al propietario para recopilar información del sitio web.
A través de acciones amistosas y éticas, puedes poner de tu parte para asegurarte de que los bots sean vistos como la herramienta útil que son, en lugar de como una especie de merodeadores digitales.
Consejo adicional: elija la herramienta de raspado web adecuada
No existe una fórmula perfecta para el web scraping, pero hay factores a tener en cuenta que pueden conducir a los mejores resultados en el mejor momento. Este artículo fue construido para abordar cualquier preocupación, cada regla escrita o no escrita, y cada mejor práctica que existe. Una API ayudará a las muchas plagas diarias del scraping, que es precisamente por lo que nuestro primer truco siempre será la automatización.
Rasca sabiamente y disfruta de los resultados de tu trabajo con 1.000 llamadas gratuitas nuestras.
Aunque algunos de los consejos mencionados anteriormente tienen que ver con la forma de utilizar la herramienta de scraping, muchos pueden ser integrados y automatizados por el propio software, lo que le permite centrarse en sus propias tareas y objetivos. Por eso creemos que elegir el programa adecuado es tan importante como todos los consejos que hemos comentado, si no más.
Sinceramente, creo que WebScrapingAPI es una excelente opción, sobre todo porque puedes probar la API con un plan gratuito y ver por ti mismo cómo se maneja antes de invertir dinero.
Si quieres echar un vistazo, hemos escrito una enorme guía del comprador con 20 herramientas de raspado web.
Noticias y actualidad
Manténgase al día de las últimas guías y noticias sobre raspado web suscribiéndose a nuestro boletín.
We care about the protection of your data. Read our <l>Privacy Policy</l>.Privacy Policy.

Artículos relacionados

Explore la comparación en profundidad entre Scrapy y Selenium para el scraping web. Desde la adquisición de datos a gran escala hasta la gestión de contenido dinámico, descubra los pros, los contras y las características únicas de cada uno. Aprenda a elegir el mejor marco de trabajo en función de las necesidades y la escala de su proyecto.


Aprenda a utilizar proxies con node-fetch, un popular cliente HTTP JavaScript, para construir raspadores web. Comprenda cómo funcionan los proxies en el raspado web, integre proxies con node-fetch y cree un raspador web compatible con proxies.


Este tutorial mostrará cómo rastrear la web utilizando Python. El rastreo web es un potente método para recopilar datos de la web localizando todas las URL de uno o más dominios.
