class: inverse, middle, center background-image: url("data:image/png;base64,#Imagenes/MochoBlanco.jpg") background-size: cover .right[ <img src="data:image/png;base64,#Imagenes/logor.png" width="30%" style="display: block; margin: auto 0 auto auto;" /> ] ## Taller - Introducción al Webscraping con R ### Archivo robots.txt **Víctor Caquilpan** victor.caquilpan@gmail.com ✉️ 08 de Noviembre de 2021 <style> body { text-align: justify} </style> --- ## ¿Que es un archivo robots.txt? La "mayoría" de los sitios Web declaran determinadas reglas indicando que es (y que no) es permitido raspar, y en algunos casos también señalan la velocidad a la que se deben realizar las consultas. Estas reglas están definidas en un archivo `robots.txt` al cual podemos acceder de la siguiente forma: .center.bg-washed-green.b--dark-green.ba.bw2.br3.shadow-5.ph4.mt5[ www.urldeinteres.com/robots.txt ] <br> <br> Las reglas definidas en este archivo deben ser respetadas (por razones éticas), sin embargo, pueden ser ignoradas al utilizar aplicaciones de raspado. --- ## Veamos una página en particular Vamos a probar con la página de Linkedin, que básicamente es una red social para fines laborales. Ingresamos a https://www.linkedin.com. <img src="data:image/png;base64,#Imagenes/Linkedin.jpg" width="1351" style="display: block; margin: auto;" /> --- ## Veamos una página en particular Vamos a probar con la página de Linkedin, que básicamente es una red social para fines laborales. Ingresamos ahora a su archivo **robots.txt** en https://www.linkedin.com/robots.txt. <img src="data:image/png;base64,#Imagenes/LinkedinRobot.jpg" width="1437" style="display: block; margin: auto;" /> --- ## Archivo robots.txt Este archivo consiste en una serie de reglas. `robots.txt` puede hacer mención a varias aplicaciones y secciones. Veamos algunos ejemplos: ```r User-agent: Googlebot Allow: / Disallow: /Analitics/ User-agent: bing Disallow: / User-agent: * Allow: /about/ ``` * A Google le es permitido acceder a todo. No puede ingresar a /Analitics * A Bing no le es permitido acceder a nada al interior de un sitio Web * Cualquier aplicación/robot puede acceder a la sección /about --- ## Utilizando librería `robotstxt` En R existen algunas librerías y funciones que nos permiten chequear este archivo en un determinado sitio Web. ```r # Cargamos la librería library(robotstxt) # Revisemos la página de la BCN paths_allowed(domain = "https://www.bcn.cl/") ``` ``` ## https://www.bcn.cl/ ``` ``` ## [1] TRUE ``` ```r # Ahora revisemos la página de Linkedin paths_allowed(domain = "https://www.linkedin.com/") ``` ``` ## https://www.linkedin.com/ ``` ``` ## [1] FALSE ``` -- En el sitio de la BCN si se nos permite utilizar robots/aplicaciones, pero en Linkedin esto no es posible. --- ## Utilizando librería `robotstxt` También podemos consultar páginas específicas dentro de un sitio Web. ```r # Probemos una sección de resultado de elecciones paths_allowed(domain = "https://www.bcn.cl/", paths = "/siit/electoral/") ``` ``` ## https://www.bcn.cl/ ``` ``` ## [1] TRUE ``` ```r # Y ahora otra sobre simulación electoral paths_allowed(domain = "https://www.bcn.cl/", paths = "/siit/simuladorelectoral") ``` ``` ## https://www.bcn.cl/ ``` ``` ## [1] FALSE ``` -- Tal como vemos en el primer caso si se nos permite ingresar, mientras que en el segundo caso no, por lo tanto lo ideal es consultar por páginas en específico. --- ## Aspectos generales En rigor, si nosotros no contamos con los permisos necesarios para ingresar a una página, no deberíamos extraer información utilizando un robot/aplicación. Esto aplica principalmente a [rastreadores](https://www.cloudflare.com/es-es/learning/bots/what-is-a-web-crawler/), no obstante también aplicaciones de raspado Web son consideradas. Una buena práctica es respetar lo que indica este archivo. Existe una librería llamada **`polite`** que nos permite hacer esto mismo pero de manera integrada con **rvest**. Les dejo el [enlace](https://github.com/dmi3kno/polite) de la librería. Hay que considerar que puede haber un gran número de sitios que no disponen de este archivo, por lo tanto no habría una limitación de este tipo para dichos sitios. --- class: inverse, center, middle background-image: url("data:image/png;base64,#Imagenes/MochoBlanco.jpg") background-size: cover ## Gracias por su participación Cualquier pregunta, pueden contactarme a mi correo: **victor.caquilpan@gmail.com** 😄