Comencemos con la pregunta obligada ¿Qué es un web Scraper? la respuesta es muy sencilla; verás, un scraper no es más que un programa el cual tiene como finalidad extraer información de sitios web. Este tipo de programas regularmente simulan la navegación de un usuario a través del protocolo HTTP. 😎
Podemos ver a un scraper como un pequeño bot, el cual, al nosotros indicar un target, es decir una página web, este comenzará un proceso de búsqueda y extracción de información. 🤖
Al software diseñado para scrapear páginas web comúnmente lo conoceremos como bot, spider, crawler o simplemente web scraper.
Los scrapers pueden ser tan sencillos o complejos como nosotros deseemos. Por ejemplo, el simple hecho de nosotros buscar la letra de nuestra canción favorita y copiarla, puede fácilmente ser clasificado como un scraper. Otro ejemplo pudiera ser un programa automatizado, para ser ejecutado todos los días a las 9am de tal forma que pueda extraer las noticias más relevante de tecnología. 🎉
La ventaja de un web scraper recae en su automatización. Si bien es cierto nosotros podemos extraer información de páginas web, de forma manual, este proceso puede llevarnos una gran cantidad de tiempo y esfuerzo. Por ejemplo, imaginemos que todos los días, en nuestra primera tarea diaria, debamos obtener el resultado de los últimos partidos jugados alrededor del mundo, para ello probablemente tengamos que visitar un par de páginas web. Este proceso, de forma manual, en el mejor de los casos , puede llevarnos un par de minutos, ya que tendríamos que buscar, copiar, pegar, realizar scroll, hacer clics etc… Esto sin duda es un problema, y para solucionarlo lo mejor que podemos hacer es implementar un web scraper, el cual realizará misma tarea en mucho menos tiempo y sin mucho esfuerzo. 👻
Al nosotros realizar un web scraper debemos tomar muy en cuenta nuestro propósito. Recordemos que un scraper simula la navegación de un usuario. Si en dado caso nuestro programa no contempla ciertos parámetros, por ejemplo un número limitado de peticiones o la rapidez con que estas se hacen, podemos hacer que el sitio web el cual estamos scrapeando tenga un rendimiento lento o inclusive llegue colapsar. Es por ello que hay que ser muy conscientes en el número de peticiones y la forma en la cual obtendremos la página web . De igual forma hay que tomar en cuenta si el sitio web permite, o no el web scraping. La forma más sencilla de saberlo es a través del archivo robots.txt. En este archivo encontraremos reglas muy puntuales sobre qué páginas son permitidas o no scrapear.
Este archivo usualmente lo encontraremos en la raíz del sitio web.
http://example.com/robots.txt.
Si en el archivo robots.txt encontramos algo como lo siguiente:
User-agent: *
Disallow:/
Se nos indica que el sitio web no permite y no desea ser scrapeado.
Es importante mencionar que apesar que un sitio web posea el archivo robots.txt y exprese explícitamente no desear ser scrapeado, esto no limitará el funcionamiento de nuestro programa, ya que recordemos, por naturaleza el internet es un sitio abierto, donde todo el mundo puede tener acceso a él. El archivo robots.txt está diseñado, principalmente, para limitar a grandes scrappers, como lo puede ser google o sistemas de scrapeo. 👻
Si quieres crear tu propio archivo robots.txt para tu página web te comparto un link el cual sin duda te será de mucha utilidad.
Cómo realizar un scraper?
Cuando estemos en el proceso de realizar un web scraper hay que tener en cuenta un par de cosas, lo principal es el maquetado del sitio web. Debemos tomarnos el tiempo suficiente para examinar exactamente como está construido el sitio web, que tipo de etiquetas utiliza, qué patrones, si es o no dinámico o reactivo etc … A partir de ello seremos capaces de planificar la mejor forma en la cual podamos extraer la información que deseemos.
Veamos un ejemplo.
<ul>
<li>Python</li>
<li>Java</li>
<li>C#</li>
<li>JavaScript</li>
</ul>
En este caso podemos percatarnos que cada uno de los elementos de la lista, los cursos, se encuentran alojados en etiques <li>
las cuales a su vez están en una etiqueta ul
. Con esto en mente, si deseamos obtener todos los cursos, debemos recorrer recorrer cada una de las etiquetas li
y extraer su contenido.
Este maquetado puede ser algo obvio, las etiquetas li
siempre deben encontrarse dentro de una etiqueta ul
sin embargo déjame decirte que hay ciertas páginas web que a veces no siguen estándares y se vuelve un poco complejo “adivinar” exactamente cuál será su siguiente patrón.
Conclusión
El internet es sin duda enorme, y cada segundo se agrega nuevo contenido a él. Si deseamos realizar búsquedas de forma repetitiva, hacerlo de forma manual no es una opción. Lo mejor que podemos hacer es simplemente apoyarnos de un web scraper, y que mejor aun si nosotros mismos lo desarrollamos. 🍻
-
check_circle_outlineMódulo 1 | 6 clases
Introducción
expand_more -
check_circle_outlineMódulo 2 | 10 clases
Beautiful Soup
expand_more -
check_circle_outlineMódulo 3 | 3 clases
Modificar DOM
expand_more -
check_circle_outlineMódulo 4 | 5 clases
Projectos
expand_more