Created
December 16, 2025 14:18
-
-
Save bastianolea/0eb150d5e841fa507e9c80e03482f1a5 to your computer and use it in GitHub Desktop.
Script para manejar un navegador con R y hacer que se desplace por una página
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # script para manejar un navegador con R y hacer que se desplace por una página | |
| library(RSelenium) | |
| # crear driver para controlar navegador | |
| driver <- rsDriver(browser = "firefox", | |
| port = 4560L, verbose = F, | |
| chromever = NULL, phantomver = NULL) | |
| remote <- driver$client | |
| # navegar al sitio | |
| remote$navigate(url = "https://bastianolea.github.io/aprende_r/") | |
| # pruebas ---- | |
| # scroll normal | |
| remote$executeScript("window.scrollBy(0, 300);") | |
| # scroll suave | |
| remote$executeScript("window.scrollBy({ | |
| top: 300, left: 0, | |
| behavior: 'smooth'});") | |
| # scroll a elemento | |
| remote$executeScript("document.querySelector('#obtener-r').scrollIntoView({behavior: 'smooth'});") | |
| # scroll a elemento con pixeles extra | |
| remote$executeScript(" | |
| const element = document.querySelector('#obtener-r'); | |
| const y = element.getBoundingClientRect().top + window.scrollY - 90; | |
| window.scrollTo({ top: y, behavior: 'smooth' });") | |
| # funciones ---- | |
| # scroll hasta el elemento + offset | |
| scrollear_elemento <- function(elemento = "#introduccion", | |
| scroll = 90) { | |
| remote$executeScript(paste(" | |
| const element = document.querySelector('", elemento, "'); | |
| const y = element.getBoundingClientRect().top + window.scrollY - ", scroll, "; | |
| window.scrollTo({ top: y, behavior: 'smooth' });") | |
| ) | |
| } | |
| # scroll por pixeles exactos | |
| scrollear_manual <- function(scroll = 90) { | |
| remote$executeScript(paste(" | |
| window.scrollBy({ | |
| top:", scroll, ", left: 0, | |
| behavior: 'smooth' });")) | |
| } | |
| # función de espera entre scrolls | |
| espera <- function(largo = "larga") { | |
| if (largo == "larga") { | |
| Sys.sleep(1.1) | |
| } else if (largo == "corta") { | |
| Sys.sleep(0.7) | |
| } | |
| } | |
| # controlar la página ---- | |
| scrollear_elemento("#introduccion") | |
| espera() | |
| scrollear_elemento("#obtener-r") | |
| espera() | |
| scrollear_manual(400) | |
| espera() | |
| scrollear_elemento("#basico") | |
| espera() | |
| scrollear_manual(400); espera("corta") | |
| scrollear_manual(260); espera("corta") | |
| scrollear_manual(260); espera("corta") | |
| scrollear_manual(260); espera("corta") | |
| scrollear_elemento("#trabajando-con-datos-en-r") | |
| espera() | |
| scrollear_manual(300); espera("corta") | |
| scrollear_manual(280); espera("corta") | |
| scrollear_manual(300); espera("corta") | |
| scrollear_manual(340); espera("corta") | |
| scrollear_elemento("#programación-básica-con-r") | |
| espera() | |
| scrollear_elemento("#visualización-de-datos-con-r") | |
| espera() | |
| scrollear_elemento("#intermedio") | |
| espera() | |
| scrollear_elemento("#ayudas-para-aprender-r") | |
| espera() | |
| scrollear_elemento("#apuntes") | |
| espera() | |
| scrollear_elemento("#libros-recomendados") | |
| espera() | |
| scrollear_elemento("#cursos") | |
| espera() | |
| scrollear_manual(420); espera("corta") | |
| scrollear_manual(310); espera("corta") | |
| scrollear_manual(300); espera("corta") | |
| scrollear_elemento("#avanzado") | |
| espera() | |
| scrollear_manual(360) | |
| espera() | |
| scrollear_elemento("#libros-avanzados") | |
| espera() | |
| scrollear_manual(300); espera("corta") | |
| espera() | |
| scrollear_elemento("#manténte-al-día") | |
| espera() | |
| scrollear_elemento("#atrévete") | |
| espera() | |
| # volver arriba | |
| scrollear_elemento("body") | |
| # resultado: https://www.linkedin.com/posts/bastianolea_rstats-activity-7406413109680140289-WKpv?utm_source=share&utm_medium=member_desktop&rcm=ACoAAB9if5MBe0keh4VrsmJOFbZxmIK9T9GSkYM |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment