INTRODUCCION

Vamos a realizar web scrapping de una libreria online llamada Zlibrary en la cual hemos hecho una seleccion manual previa para que nos recopile todos los libros entre (2000-2020) que nos encuentre relacionados por la denominacion “data science” como tematica de busqueda.

A partir de aqui procederemos a extraer titulo del libro, autor, año de edicion, calificacion(0-5) e idioma de los mismos. Ademas incluiremos todas las paginas habidas en el momento de la extraccion para el filtrado anteriormente expuesto que hemos realizado.

Cargamos librerias

library(rvest)
library(robotstxt)
library(selectr)
library(xml2)
library(tibble)
library(DT)
library(tidyverse)
library(kableExtra)

Enlace a la pagina que representa la seccion filtrada

url <- "https://es.es1lib.org/s/data%20science/?e=1&yearFrom=2000&yearTo=2022"

Vamos a ver si esta permitido bajar informacion de esta pagina

paths_allowed(paths = c(url))
## 
 es.es1lib.org
## [1] TRUE

y vemos como resultado TRUE esta permitido

Obtenemos su codigo html de la pagina web

pag_web <- read_html(url)

Procedemos a la extraccion del texto de las variables de nuestros datos que nos interesen

Titulo = pag_web%>%html_nodes("h3 a")%>%html_text()

Autor = pag_web%>%html_nodes(".authors")%>%html_text()

Año = pag_web%>%html_nodes(".property_year .property_value")%>%html_text()

Calificacion = pag_web%>%html_nodes(".book-rating-interest-score")%>%html_text()

Idioma = pag_web%>%html_nodes(".text-capitalize")%>%html_text()

Unimos nuestros datos sacando el dataframe respectivo de la pagina

dt <- data.frame(Titulo, Autor, Año, Calificacion, Idioma)


kable(head(dt,6), booktabs = T) %>%
  kable_styling(font_size=12)
Titulo Autor Año Calificacion Idioma
Data Science from Scratch: First Principles with Python, Second Edition Joel Grus 2019 5.0 english
Numerical Python: Scientific Computing and Data Science Applications with Numpy, SciPy and Matplotlib Robert Johansson 2019 5.0 english
Data Analytics: Practical Guide to Leveraging the Power of Algorithms, Data Science, Data Mining, Statistics, Big Data, and Predictive Analysis to Improve Business, Work, and Life Arthur Zhang 2017 3.0 english
Data Analysis From Scratch With Python: Beginner Guide using Python, Pandas, NumPy, Scikit-Learn, IPython, TensorFlow and Matplotlib Peters Morgan 2018 5.0 english
Python Data Science Handbook. Essential Tools for Working with Data Jake VanderPlas 2016 5.0 english
R for Data Science: Import, Tidy, Transform, Visualize, and Model Data Hadley Wickham, Garrett Grolemund 2017 0 english

Tenemos pues el vector de una pagina n=1, creemos pues el de todas las paginas que tenemos segun condiciones del filtro manual empleado que son 10.

Para ello establecemos un bucle para procesar esta iteraciones

Creamos primeramente el vector de todas las páginas

tot_pags <- paste0("https://es.es1lib.org/s/data%20science/?e=1&yearFrom=2000&yearTo=2022", 
                   1:10, "/")

Sabemos que son 10 páginas por el carrusel del final de la página.

Creamos tabla en blanco

dat_tot <- data.frame()

Efectuamos el bucle a partir de la primera pagina.

for(pag in tot_pags){
  
url <- pag

pag_web <- read_html(url)

Titulo = pag_web%>%html_nodes("h3 a")%>%html_text()

Autor = pag_web%>%html_nodes(".authors")%>%html_text()

Año = pag_web%>%html_nodes(".property_year .property_value")%>%html_text()

Calificacion = pag_web%>%html_nodes(".book-rating-interest-score")%>%html_text()

Idioma = pag_web%>%html_nodes(".text-capitalize")%>%html_text()


dt <- data.frame(Titulo, Autor, Año, Calificacion, Idioma)

dat_tot <- rbind.data.frame(dat_tot,dt)

# Visualizamos salida contador de avance(proceso): 

print(paste0("Extraccion de pag: ", pag))

}
## [1] "Extraccion de pag: https://es.es1lib.org/s/data%20science/?e=1&yearFrom=2000&yearTo=20221/"
## [1] "Extraccion de pag: https://es.es1lib.org/s/data%20science/?e=1&yearFrom=2000&yearTo=20222/"
## [1] "Extraccion de pag: https://es.es1lib.org/s/data%20science/?e=1&yearFrom=2000&yearTo=20223/"
## [1] "Extraccion de pag: https://es.es1lib.org/s/data%20science/?e=1&yearFrom=2000&yearTo=20224/"
## [1] "Extraccion de pag: https://es.es1lib.org/s/data%20science/?e=1&yearFrom=2000&yearTo=20225/"
## [1] "Extraccion de pag: https://es.es1lib.org/s/data%20science/?e=1&yearFrom=2000&yearTo=20226/"
## [1] "Extraccion de pag: https://es.es1lib.org/s/data%20science/?e=1&yearFrom=2000&yearTo=20227/"
## [1] "Extraccion de pag: https://es.es1lib.org/s/data%20science/?e=1&yearFrom=2000&yearTo=20228/"
## [1] "Extraccion de pag: https://es.es1lib.org/s/data%20science/?e=1&yearFrom=2000&yearTo=20229/"
## [1] "Extraccion de pag: https://es.es1lib.org/s/data%20science/?e=1&yearFrom=2000&yearTo=202210/"

Visualizamos finalmente todos nuestros datos en una tabla bien presentada con los resultados

datatable(dat_tot, class = 'cell-border stripe')

Nota: Se entiende como Calificacion “0” libros “Sin Calificar”.