Проверьте, можно ли прокрутить вниз с помощью RSelenium

Я использую RSelenium для автоматической прокрутки веб-сайта социальной сети и сохранения сообщений. Иногда я добираюсь до конца веб-страницы, и больше не могу загрузить сообщения, так как больше нет доступных данных. Я просто хочу проверить, так ли это, чтобы перестать пытаться прокручивать.

Как узнать, можно ли продолжить прокрутку в RSelenium? Приведенный ниже код иллюстрирует то, что я пытаюсь сделать — думаю, мне просто нужна помощь с оператором «если».

К вашему сведению, в Python есть решение для этого >здесь (по сути, проверка изменения высоты страницы между итерациями), но я не могу понять, как это реализовать (или любое другое решение) в R.

# Open webpage
library(RSelenium)
rD = rsDriver(browser = "firefox")
remDr = rD[["client"]]
url = "https://stocktwits.com/symbol/NZDCHF"
remDr$navigate(url) 

# Keep scrolling down page, loading new content each time. 
ptm = proc.time()
repeat {   
  remDr$executeScript("window.scrollTo(0,document.body.scrollHeight);")
  Sys.sleep(3) #delay by 3sec to give chance to load. 

  # Here's where i need help  
  if([INSERT CONDITION TO CHECK IF SCROLL DOWN IS POSSIBLE]) {
    break
  }
}

person jruf003    schedule 20.07.2017    source источник


Ответы (1)


Наткнулся на способ сделать это в Python 20р." rel="noreferrer">здесь и изменил его для работы в R. Ниже приведено работающее обновление исходного кода, который я разместил выше.

# Open webpage
library(RSelenium)
rD = rsDriver(browser = "firefox")
remDr = rD[["client"]]
url = "https://stocktwits.com/symbol/NZDCHF"
remDr$navigate(url) 

# Keep scrolling down page, loading new content each time. 
last_height = 0 #
repeat {   
  remDr$executeScript("window.scrollTo(0,document.body.scrollHeight);")
  Sys.sleep(3) #delay by 3sec to give chance to load. 

  # Updated if statement which breaks if we can't scroll further 
  new_height = remDr$executeScript("return document.body.scrollHeight")
  if(unlist(last_height) == unlist(new_height)) {
    break
  } else {
    last_height = new_height
  }
}
person jruf003    schedule 21.07.2017
comment
Большое спасибо за это - я пробовал несколько других потоков, но это было то, что сработало для меня :) - person Tim; 12.04.2021
comment
Счастлив, что это сработало! - person jruf003; 16.04.2021