El Web scraping es un método para recoger, organizar y analizar la información que se extiende por Internet de forma desorganizada. Puede recuperar automáticamente los datos y transformarlos con una estructura utilizable para nosotros.
La forma más conocida es usar Selenium con Python para hacer web scraping. He redactado un tutorial sobre ello para que sea fácil de aplicar.
Tabla de Contenido
1. Scrapea y guarda
Cuando se recorren grandes sitios web, siempre es es bueno almacenar los datos que se han descargado previamente. Así que no tienes que volver a scrapear lo mismo, en caso de que falle el programa antes de terminar el proceso. Almacenar en un formato de valor clave como Redis es simple. Sin embargo, también puedes usar MySQL o cualquier otro mecanismo de almacenamiento en caché del sistema de archivos.
2. Optimizar las solicitudes
Los grandes sitios web despliegan servicios que pueden rastrear el rastreo en un sitio. Si estás enviando solicitudes simultáneas desde la misma dirección IP, te clasificarán como un ataque DoS (Denial Of Service) en su sitio web, y te bloquearán al instante. Por lo tanto, es aconsejable revisar sus solicitudes y encadenarlas correctamente una tras otra, convirtiéndolas en algo más humano. Determine el tiempo de respuesta promedio de los sitios web, y luego decida el número de solicitudes simultáneas al sitio.
3. Hacer tabla de URLs
Mantén una tabla de URL para todos los enlaces que ya has rastreado, en una tabla o dentro de una tienda de valores clave. Te salvará si el rastreador se colapsa cuando estés a punto de terminar. Sin esta lista de URLs, mucho tiempo y ancho de banda se consumirían en vano. Por lo tanto, debes asegurarte de persistir la lista de URLs.
4. Scraping en fases
Es más simple y seguro si cortas el scraper en varias fases cortas. Por ejemplo, podrías dividir el scraping de un sitio grande en dos. Uno para acumular enlaces a las páginas de las que se requiere obtener datos y otro para descargar estas páginas para analizar su contenido.
5. Filtro de navegación
No procese cada enlace a menos que sea necesario. En su lugar, programe un algoritmo de rastreo adecuado para hacer que el rascador pase por las páginas más requeridas. Es natural siempre tentar a ir detrás de todo. Pero sería una pérdida total de ancho de banda, tiempo y almacenamiento.
6. Busca la API nativa
La mayoría de los sitios exponen las API para que los programadores obtengan los datos. También proporcionan la documentación de apoyo. Si el sitio tiene una API, no es necesario que programes un scraper, a menos que el dato que quieres no te lo brinde el API. Por lo tanto, basta con leer sus requisitos y su política de uso de los datos.
7. Compruebe si devuelve un JSON
Si el sitio no expone una API y aún así necesitas sus datos, entonces busca alguna petición JSON del lado del servidor, puede que encuentres la data que buscas.
Desde algún navegador, presiona F12 para obtener la ventana de herramientas para desarrolladores. Recargue la página web, y vaya a la pestaña de Red para ver los registros que terminan en .json, puedes identificar la URL de la que procede. A continuación, abra una nueva pestaña y pegue ese enlace y JSON se mostrará con los datos.
Si estas pensando en crear una página web para tu empresa, pronto subiré consejos, atento!
8. Proxies
Los proxies nos ayudarán a ocultar nuestra IP y como resultado nos permitirán hacer mas peticiones hacia un mismo servidor sin ser baneados. En redes sociales es muy frecuente el baneo de IPs.
9. Cambia de User Agent
El user agent es una cadena de texto que tiene como característica permitir a los servidores identificar desde que dispositivo nos conectamos. Podremos conectarnos como si fueramos un Iphone, Android, etc.
Luego de todo esto, si necesitas ayuda para implementar web scraping en tu empresa, no dudes en contactarnos.
Happy scraping 😉