Как правильно использовать Rselenium для ожидания загрузки страницы?

#r #rvest #rselenium

#r #rvest #rselenium

Вопрос:

Итак, я пытаюсь найти название и местоположение различных пивоварен в США по этой ссылке:

https://www.brewersassociation.org/directories/breweries/

Как вы можете видеть, загрузка HTML занимает секунду. Это означает, что когда я очищаю HTML-код с помощью Rselenium, он загружает только половину страницы, вот код, который я запускаю, который должен реплицироваться для всех, у кого есть Rselenium,

 remDr <- RSelenium::remoteDriver(remoteServerAddr = "localhost",
                                 port = 4445L,
                                 browserName = "chrome")
remDr$open()
remDr$setTimeout(type="page load")
remDr$navigate("https://www.brewersassociation.org/directories/breweries/?location=MI")

remDr$screenshot(display=TRUE)
  

Однако, если вы посмотрите на скриншот, загружается только половина страницы. Я пробовал установить время ожидания и несколько других команд, но они, похоже, не позволяют странице правильно загружаться. Любые советы или идеи о том, как это исправить?

Ответ №1:

Вы могли бы попробовать это:

 library(RSelenium) 
driver <- rsDriver(browser=c("firefox"), port = 4567L)
remote_driver <- driver[["client"]]
remote_driver$navigate("https://www.brewersassociation.org/directories/breweries/?location=MI")
#You can wait 3 seconds
Sys.sleep(3)
#Now you can scroll down all page and wait for the full page
scroll_d <- remote_driver$findElement(using = "css", value = "body")
#This will scroll the page but is not enough, but is a way to create an automatization. 
#If you scroll the page many times you are able to see all page.
scroll_d$sendKeysToElement(list(key = "end"))
#How? For example you can use the alphabet to monitor the list. 
  

Этот ответ — просто способ / идея решить проблему.