我想出了如何使用RSelenium滚动动态页面,但是每次页面的长度各不相同,因此有时对于包含许多元素的长页面来说,我的代码不起作用,并且在到达页面底部之前就停止了。有人有任何想法如何避免它吗? 预先谢谢你!
我的代码示例: 第一个效果很好,最好以这种方式滚动直到页面结尾。我应该以某种方式而不是像10那样定义特定的滚动数,而是指定条件以重复这种滚动直到某个时刻。但是不知道如何...
for(i in 1:10){
cd$executeScript(paste("scroll(0,",i*10000,");"))
Sys.sleep(3)
}
###after 10 big scrolls starts mini scrolls like that###
element <- cd$findElement("css", "body")
flag <- TRUE
counter <- 0
n <- 5
while(flag){
counter <- counter + 1
#compare the pagesource every n(n=5) time, since sometimes one scroll down doesn't render new content
for(i in 1:n){
element$sendKeysToElement(list("key"="page_down"))
Sys.sleep(2)
}
if(exists("pagesource")){
if(pagesource == cd$getPageSource()[[1]]){
flag <- FALSE
writeLines(paste0("Scrolled down ",n*counter," times.\n"))
} else {
pagesource <- cd$getPageSource()[[1]]
}
} else {
pagesource <- cd$getPageSource()[[1]]
}
} #But unfortunately this line is also powerless before the real big pages so it stops before reaching the bottom