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”.