Volver al blog
La ciencia del web scraping
Anda MiuțescuLast updated on Mar 31, 202613 min read

La lista definitiva de consejos y trucos para el web scraping

La lista definitiva de consejos y trucos para el web scraping

Aunque el web scraping pueda parecer sencillo en la práctica, existen muchos escollos con los que puede tropezar un desarrollador sin experiencia. En lugar de insistir a la fuerza hasta quedarse sin proxies sin bloquear, me atrevo a pensar que sería mejor realizar el scraping de forma inteligente: obtener los datos que necesitas y salir sin que nadie se dé cuenta.

La verdadera pregunta es: ¿cómo se hace eso? ¿Cómo se obtiene información sin que te bloqueen la IP, sin toparte con CAPTCHAs, sin recuperar código JavaScript inútil y sin tener que retocar el código del scraper sin cesar? Bueno, no hay una regla de oro que seguir, pero sí hay buenas prácticas.

Hemos preparado doce consejos para ti. Úsalos y verás que todos los datos de Internet están a solo unos clics de distancia.

1. Planifica antes de raspar

Como cualquier proyecto, las tareas de web scraping resultan mucho más fáciles si se diseña una estrategia clara antes incluso de empezar. En primer lugar, ¿por qué necesitas datos? Puede parecer una pregunta obvia, pero la respuesta es fundamental para determinar qué información debes recopilar.

A continuación, ¿de dónde vas a obtener la información? La herramienta de scraping debe ser adecuada para los sitios a los que tiene que acceder, por lo que examinar tus fuentes de datos te ayudará a crear o adquirir el programa adecuado para el trabajo.

Pregunta número tres: ¿cómo vas a utilizar la información recopilada? Podrías procesarla tú mismo, utilizar un software o incluso enviarla a través de un complejo proceso. La respuesta será tu primer paso para decidir la estructura y el formato de archivo de los datos recopilados.

Hay muchas otras preguntas e ideas que debes aclarar, la mayoría de las cuales dependen en gran medida de lo que quieras conseguir. Una cosa es segura: «mide dos veces, corta una» es una máxima que se aplica al web scraping.

2. Actúa de forma más humana

Si quieres saber si un visitante de un sitio web es un humano o un bot, solo tienes que fijarte en cómo se comporta. Los bots se mueven a la velocidad del rayo 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, como un humano. Lo bueno de esto es que las personas actúan de formas muy diferentes, por lo que tienes mucha libertad a la hora de programar. Estas son algunas acciones que te sugerimos añadir:

  • Añade intervalos aleatorios de inactividad, como si un humano estuviera leyendo el contenido de la página. Un retraso de entre 5 y 10 segundos funciona perfectamente.
  • Navega por las páginas siguiendo un patrón en forma de árbol. Si estás rastreando varias páginas secundarias, pasa siempre por la página principal al avanzar. Esto 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 aleatorias de vez en cuando. Eso es algo que hace todo el mundo, no solo yo, ¿verdad?

En cualquier caso, la razón por la que tu bot tiene que actuar de cierta manera es porque el sitio web podría estar supervisando y registrando su actividad. Pero, ¿y si el sitio web no pudiera rastrear al bot? Lee el siguiente punto para obtener la respuesta.

3. Alterna tus proxies

Usar un proxy para asegurarte de que tu IP real no sea bloqueada es algo obvio. También lo es conseguir un proxy de una ubicación geográfica específica para acceder a contenido restringido por zona. ¡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 conjunto de proxies. Con él, cada solicitud que envíes se asigna a una IP aleatoria dentro del conjunto y se envía al destino. De esta forma, puedes rastrear un sitio web tanto como quieras y cada solicitud parecerá que proviene de un lugar y una persona diferentes.

Además, los proxies rotativos garantizan que, si una IP se bloquea, no te quedarás atascado hasta que cambies manualmente de proxy. Una solicitud 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 garantizar que no haya lagunas en tu base de datos.

Para obtener los mejores resultados posibles, te conviene utilizar proxies rotativos residenciales. Las IP residenciales son las menos propensas a ser detectadas o bloqueadas y, al rotarlas, haces que el rastreador sea aún más difícil de detectar. Ten en cuenta que esto puede ser excesivo en ocasiones. Si no te enfrentas a medidas anti-bot complejas, los proxies rotativos de centros de datos pueden hacer el trabajo igual de bien y a un precio más económico.

4. Utiliza un navegador sin interfaz gráfica

Un navegador sin interfaz gráfica es igual que uno normal, salvo que no tiene interfaz gráfica de usuario. Para navegar por la web con uno, tendrás que utilizar una interfaz de línea de comandos.

Definitivamente deberías añadir un navegador sin interfaz gráfica a tu proceso de web scraping, 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 de esto es el redimensionamiento de los elementos de la página para que se adapten bien a la resolución de la pantalla del visitante.

El problema es que el preciado HTML queda oculto tras el código JavaScript. Para acceder a él, tendrás que ejecutar el JS. Un scraper convencional no puede hacerlo, pero todos los navegadores sí.

Por lo tanto, sin un entorno de navegador, la herramienta de scraping no podrá recopilar datos de ningún sitio web que utilice JavaScript, que son la mayoría en este momento, o al menos la mayoría de los que importan.

Si estás creando un scraper desde cero, te recomiendo que pruebes Puppeteer; aquí tienes algunos detalles sobre lo que hace y cómo utilizarlo.

5. Rotar los encabezados User-Agent

User-Agent es el nombre de un encabezado de solicitud HTTP que indica al sitio web que estás visitando qué navegador y sistema operativo estás utilizando. En cierto modo, los sitios web utilizan este encabezado para obtener más información sobre quién los visita. Es ideal para el análisis de datos y, de paso, resulta útil para detectar bots.

Así es como puede verse 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 rastreadores no utilizan uno, lo cual es sospechoso y una buena forma de anunciar que son bots. Asegúrate de enviar encabezados de aspecto normal con cada solicitud.
  • Tener un agente de usuario desactualizado. Con cada nueva actualización, los navegadores suelen cambiar el encabezado. Por lo tanto, si tu lista contiene un agente de usuario para Mozilla pero este se ha actualizado y lo ha cambiado, el sitio web que visites podrá detectar que algo no cuadra.
  • Usar el mismo encabezado para cada solicitud. Podrías usar el agente de usuario normal de tu navegador real, pero esto daría lugar a cientos de solicitudes diferentes, procedentes de distintas IP con exactamente la misma huella digital. Es una pista enorme.

Aquí tienes un consejo extra sobre el tema: prueba a utilizar el agente de usuario de Googlebot. Por supuesto, cualquier sitio web quiere ser indexado, por lo que dejan que los rastreadores de Google hagan su trabajo. Sin embargo, una advertencia: sus bots también tienen direcciones IP y comportamientos específicos, por lo que el agente de usuario por sí solo no es garantía de éxito.

6. Añade funcionalidades anti-CAPTCHA

Si estás raspando bien, no deberías encontrarte con CAPTCHAs, salvo en contadas ocasiones. Aun así, si lo haces, es una gran molestia, ya que podría detener tu rastreador en seco o devolver datos falsos (el código de la página del 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 eficiente. Esto es lo que debes hacer:

  • Utiliza proxies para que parezca que tus solicitudes provienen de diferentes fuentes.
  • Cambia los encabezados de tus solicitudes (especialmente el user-agent). De lo contrario, puedes seguir siendo detectado a pesar de utilizar varias IP.
  • Ejecuta el código Javascript de la página. Un navegador sin interfaz gráfica es tu mejor opción. Muchos sitios lanzan CAPTCHAs a cualquier visitante que no lo haga, ya que se trata de un comportamiento inusual.

Así que, básicamente, sigue los consejos n.º 3, n.º 4 y n.º 5.

Si el scraper sigue teniendo problemas, necesitarás un solucionador de CAPTCHAs. A la hora de elegir una herramienta de web scraping, asegúrate de que la que elijas tenga esta función integrada. De lo contrario, técnicamente es posible integrar un solucionador tú mismo, pero eso implica código adicional y una pérdida de tiempo extra. Para tu información, nuestra API cuenta con esta funcionalidad, aunque, en realidad, no se encuentra con muchos CAPTCHAs.

7. Crea una lista de URL

Cuando comiences un trabajo de scraping, probablemente compilarás una lista de URL con información valiosa. Aquí tienes una idea: en lugar de limitarte a enviar las URL al scraper, mantén una lista y marca todos los enlaces que ya hayas rastreado. Para mayor claridad, también puedes guardar los datos extraídos junto con la URL.

La razón es sencilla: si tu ordenador se bloquea o ocurre algún otro imprevisto, seguirás sabiendo qué datos ya tienes, lo que evitará un re-scraping innecesario.

Nuestro consejo es escribir un script para el registro de la extracción de datos. Actualizar la lista manualmente supone mucho trabajo repetitivo y, de todos modos, no podrás seguir el ritmo del bot.

8. Conoce las estructuras de las páginas

Recopilar más datos lleva más tiempo, naturalmente. Por lo tanto, una forma de aumentar la eficiencia es identificar exactamente qué información debe extraer el rastreador. Es fácil en teoría, pero cada sitio web y cada página web son únicos. Para reducir la sobrecarga y ahorrar tiempo, tienes que aprender algunas cosas sobre cómo están estructuradas tus páginas de destino.

Así es como se hace:

  • Ve a la página;
  • Haz clic con el botón derecho en el texto que desees y selecciona «Inspeccionar elemento»;
  • Fíjate en cómo está anidada esa información, en qué clases se encuentra y bajo qué etiqueta;
  • Busca patrones estructurales en otras páginas de interés. Es probable que puedas crear un script que recopile toda la información necesaria de todo el sitio web.

Una vez seguidos estos pasos, te resultará mucho más fácil extraer solo los detalles que necesitas. La ventaja es que ya no tendrás que lidiar con código HTML irrelevante que sature tus documentos.

Comprender el diseño resulta especialmente útil para extraer información de productos. Las páginas de productos de un mismo sitio web suelen tener una estructura similar, si no idéntica. Si descubres la lógica, podrás extraer y analizar la información mucho más rápido.

9. Añade un retraso entre las solicitudes

El objetivo de un rastreador web es recopilar datos más rápido de lo que podría hacerlo un humano. Lo entendemos, pero la velocidad tiene un efecto secundario indeseado: deja claro como el agua que las solicitudes las envía un bot.

Recuerda lo que dijimos sobre actuar como un visitante normal: si el scraper llama la atención, es mucho más probable que lo bloqueen. Pero no te preocupes, solo tienes que añadir retrasos aleatorios cuando uses la misma IP para varias visitas simultáneas o sucesivas.

Recuerda: haz esto cuando utilices el mismo proxy. Si cambias la IP y los encabezados después de cada solicitud, el retraso no debería ser necesario. Sin embargo, si has iniciado sesión con una IP, debes ceñirte a esa, lo que significa que también necesitarás los retrasos.

Asegúrate de que el temporizador sea ligeramente diferente, para que los retrasos sean aleatorios. Algo entre 5 y 10 segundos debería funcionar bien.

10. Almacena en caché las páginas importantes

En algunos casos, querrás volver a visitar páginas que ya has rastreado anteriormente para obtener más información. En lugar de hacerlo, almacena la página en caché en la primera visita y ya tendrás todos los datos guardados.

Incluso con el rastreador web más avanzado, sigue existiendo la posibilidad de que el bot no consiga los datos en el primer intento, y aunque lo haga, seguirías desperdiciando esfuerzo. Simplemente recoge todo el HTML de una sola vez y luego podrás extraer cualquier información que necesites de la versión guardada.

Por ejemplo, puedes almacenar en caché una página de producto para tenerla siempre a mano. Si hoy necesitas las especificaciones del producto, pero mañana quizá quieras el precio, los datos ya estarán recopilados, a la espera de ser procesados.

Pero ten en cuenta que esto funciona para información estática. Si quieres los precios de las acciones, tendrás que seguir extrayendo datos actualizados, ya que la versión almacenada en caché quedará obsoleta rápidamente.

11. Ten cuidado al iniciar sesión

Es posible que los datos que necesitas estén ocultos tras una página de inicio de sesión. Me vienen a la mente las plataformas de redes sociales. Claro, puedes obtener algunos fragmentos de contenido sin una cuenta, pero es más laborioso y es posible que quieras algo que solo sea visible si formas parte de un grupo o de una lista de amigos. En resumen, es posible que tengas que iniciar sesión y eso conlleva algunos problemas.

Todos los usuarios de un sitio web con una cuenta deben aceptar sus Condiciones de servicio. En estas condiciones, puede haber una cláusula que prohíba específicamente el uso de bots, herramientas automatizadas o rastreadores 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, aunque los sitios web pueden no prestar mucha atención a los visitantes no registrados, sí prestan más atención a las cookies enviadas por los usuarios que han iniciado sesión. Así que, en esencia, habrá más ojos puestos en tu bot. Un comportamiento de bot evidente o unas cookies reveladoras aumentan aún más las probabilidades de que tu rastreador sea bloqueado.

Lo que debes hacer:

  • Lee atentamente los Términos de servicio y asegúrate de no infringirlos.
  • Asegúrate de seguir todos los demás consejos de este artículo, especialmente los relacionados con los proxies, el comportamiento humano, la renderización de JS y los encabezados de solicitud.

12. Evita causar daños al sitio web

A la mayoría de los administradores web no les gusta tener rastreadores en sus sitios web. Para algunos, los bots son una molestia menor; para otros, suponen un gran peligro. La realidad es que los hackers y otros malintencionados utilizan bots para causar problemas y hacer travesuras, como bloquear sitios web o intentar robar datos confidenciales.

Incluso tus intenciones sean totalmente amistosas, podrías causar problemas accidentalmente. Un montón de solicitudes simultáneas podrían colapsar el servidor, así que aquí tienes algunas prácticas recomendadas para asegurarte de no dejar un caos a tu paso:

  • Reduzca el número de solicitudes para evitar que se bloquee todo el sitio web;
  • Lee el archivo Robots.txt, que debería explicar qué acciones pueden realizar los bots. No es un documento legalmente vinculante, pero expresa los deseos del propietario del sitio.
  • Ten cuidado con cómo utilizas los datos extraídos. Tomar contenido y volver a publicarlo, por ejemplo, es perjudicial e ilegal, ya que ese contenido está protegido por la ley de derechos de autor.
  • Siempre que sea posible, pide permiso al propietario para recopilar información del sitio web.

Mediante acciones respetuosas y éticas, puedes contribuir a que los bots sean vistos como la herramienta útil que son, en lugar de como una especie de merodeadores digitales.

Consejo extra: elige la herramienta de web scraping 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 momento oportuno. Este artículo se ha elaborado para abordar cualquier inquietud, todas las reglas escritas o no escritas y todas las mejores prácticas que existen. Una API ayudará a los muchos usuarios que realizan scraping a diario, y es precisamente por eso que nuestro primer truco siempre será la automatización.

¡Realice el scraping con inteligencia y disfrute de los resultados de su trabajo con 1000 llamadas gratuitas de nuestra parte!

Aunque algunos de los consejos mencionados anteriormente tienen que ver con cómo utilizas la herramienta de scraping, muchos pueden integrarse y automatizarse mediante el propio software, lo que te permite centrarte en tus 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 opción excelente, sobre todo porque puedes probar la API con un plan gratuito y ver por ti mismo cómo funciona antes de invertir dinero.

Si te apetece echar un vistazo, hemos elaborado una completa guía de compra con 20 herramientas de web scraping, ¡así que échale un vistazo!

Acerca del autor
Anda Miuțescu, Redactor de contenidos técnicos @ WebScrapingAPI
Anda MiuțescuRedactor de contenidos técnicos

Anda Miuțescu es redactora de contenidos técnicos en WebScrapingAPI, donde elabora contenidos claros y útiles que ayudan a los desarrolladores a comprender el producto y sus capacidades.

Empieza a crear

¿Estás listo para ampliar tu recopilación de datos?

Únete a más de 2000 empresas que utilizan WebScrapingAPI para extraer datos de la web a escala empresarial sin ningún gasto de infraestructura.