Saltar al contenido

Web Crawling en R

Hay dos módulos muy populares: rvest es para raspar datos, y rcrawler es para gatear. Ambos son versátiles en su propio contexto.

Utilice el siguiente comando después de abrir la consola R para instalarlos.

Web Crawling en RWeb Crawling en R
12install.packages("rvest")install.packages("Rcrawler")

R

Se requiere Java para usar los paquetes Rcrawler. Para verificar que Java está disponible, puede emitir el siguiente comando:

1system("java -versión")

R

La salida debería ser algo como esto:

1234java version "1.8.0_241 "Java(TM) SE Runtime Environment (build 1.8.0_241-b07)Java HotSpot(TM)64-Bit Server VM (build 25.241-b07, mixed mode)[1]0

bash

Para usar estos módulos, hay que cargarlos:

12library("Rcrawler")library("rvest")

R

Antes de saltar a la derecha en el rastreo, considere el impacto que está a punto de hacer en un sitio específico. Hay sitios que implementan mecanismos contra los ataques de denegación de servicio. Estos ataques suelen significar que usted está solicitando datos del servidor web más rápido de lo que éste puede servir, por lo que los recursos se sobrecargan. Puede fallar, o su dirección IP puede ser temporalmente prohibida de alcanzar el sitio. Siempre debes ser cortés y obedecer el protocolo de los robots.

Puede que quieras elegir un sitio al azar que sea de tamaño pequeño.

1Rcrawler(Website ="http://r3ap3rpy.pythonanywhere.com/", no_cores =4, no_conn =4, Obeyrobots =TRUE)

R

La salida debería ser algo como esto:

123456 Preparando el cluster de lectura múltiple... En proceso :1...Progreso: 100.00 % :1 parseado de 1| Páginas recopiladas: 1| Nivel: 1 + Verificar la variable dataframe INDEX para ver los detalles del rastreo + Las páginas web recogidas se almacenan en la carpeta de proyectos + Nombre de la carpeta de proyectos : r3ap3rpy.pythonanywhere.com-070950 + Ruta de la carpeta de proyectos : C:/Users/dszabo/Documents/r3ap3rpy.pythonanywhere.com-070950

bash

Aquí, el argumento Obeyrobots es FALSO por defecto; le dice a Rcrawler que obedezca el contenido del archivo robots.txt. El no_cores le dice a R cuántos núcleos debe ejecutar la actividad de rastreo en, y el no_conn le dice a R cuántas conexiones simultáneas puede hacer cada núcleo. Cada página web rastreada se descarga en su unidad local bajo el directorio Documents, y se crea una nueva carpeta con el nombre del sitio que está rastreando.

El módulo Rcrawler tiene muchas funciones que le permiten apuntar a sitios con información específica para extraer. Siempre es conveniente consultar la documentación.

Digamos que usted quiere extraer los enlaces del sitio solamente, y recoger los enlaces que son externos, es decir, que apuntan a otros sitios.

1 página <- LinkExtractor(url ="http://r3ap3rpy.pythonanywhere.com/", ExternalLInks=TRUE)

R

Ahora en la variable de la página tienes los siguientes valores:

12345678910111213141516171819$Info$Info$Id[1]112$Info$Url[1]"http://r3ap3rpy.pythonanywhere.com/"$Info$Crawl_status[1]"finished"$InternalLinks[1]"http://r3ap3rpy.pythonanywhere.com/""http://r3ap3rpy.pythonanywhere.com/github""http://r3ap3rpy.pythonanywhere.com/ytube""http://r3ap3rpy.pythonanywhere.com/udemy"[5]"http://r3ap3rpy.pythonanywhere.com/education""http://r3ap3rpy.pythonanywhere.com/experience""http://r3ap3rpy.pythonanywhere.com/certificates"$ExternalLinks[1]"https://r3ap3rpy.github.io/""http://shortenpy.pythonanywhere.com/""https://twitter.com/r3ap3rpy"[4]"https://www.linkedin.com/in/d%C3%A1niel-ern%C5%91-szab%C3%B3-081359157""https://github.com/r3ap3rpy""https://www.youtube.com/channel/UC1qkMXH8d2I9DDAtBSeEHqg"

bash

Ahora puedes referirte a los enlaces externos de esta manera: page$ExternalLinks.