Я не уверен, что это из-за того, что у меня медленный интернет, но я пытаюсь очистить веб-сайт, который загружает информацию, когда вы прокручиваете страницу вниз. Я выполняю скрипт, который идет в конец страницы и ждет, пока сервер Selenium/Chrome загрузит дополнительный контент. Сервер обновляет и загружает новый контент, потому что я могу очистить информацию, которой изначально не было на странице, и новый контент отображается в средстве просмотра Chrome, но обновляется только один раз. Я установил функцию Sys.sleep()
на ожидание в течение минуты каждый раз, чтобы у контента было достаточно времени для загрузки, но он по-прежнему не обновляется более одного раза. Я неправильно использую RSelenium? Существуют ли другие способы парсинга сайта, который загружается динамически?
В любом случае, любой совет или помощь, которую вы можете предоставить, были бы потрясающими.
Ниже приведено то, что я считаю соответствующей частью моего кода в отношении загрузки нового контента в конце страницы:
for(i in 1:3){
webElem <- remDr$findElement('css', 'body')
remDr$executeScript('window.scrollTo(0, document.body.scrollHeight);')
Sys.sleep(60)
}
Ниже приведен полный код:
library(RSelenium)
library(rvest)
library(stringr)
rsDriver(port = 4444L, browser = 'chrome')
remDr <- remoteDriver(browser = 'chrome')
remDr$open()
remDr$navigate('http://www.codewars.com/kata')
#find the total number of recorded katas
tot_kata <- remDr$findElement(using = 'css', '.is-gray-text')$getElementText() %>%
unlist() %>%
str_extract('\\d+') %>%
as.numeric()
#there are about 30 katas per page reload
tot_pages <- (tot_kata/30) %>%
ceiling()
#will be 1:tot_pages once I know the below code works
for(i in 1:3){
webElem <- remDr$findElement('css', 'body')
remDr$executeScript('window.scrollTo(0, document.body.scrollHeight);')
Sys.sleep(60)
}
page_source <- remDr$getPageSource()
kata_vector <- read_html(page_source[[1]]) %>%
html_nodes('.item-title a') %>%
html_attr('href') %>%
str_replace('/kata/', '')
remDr$close