#r #crrri
Вопрос:
Привет, я использую пакет crrri R для создания скребка, у меня есть асинхронная функция для сброса DOM, но я продолжаю получать пробелы, даже несмотря на то, что в цикле у меня есть страница$loadEventFired ().
Попытался создать событие времени выполнения, которое будет ждать, пока я не получу элементы со страницы, но я озадачен обещаниями и не могу заставить его работать. есть какие-нибудь идеи?
функция ожидания
if(try<10 amp; Runtime$evaluate(expression = paste0('document.getElementsByClassName("',element_class,'").length'))%...>%.$result%...>%.$value%...>%.>0 ){
Sys.sleep(0.5)
wait_for_element(Runtime,element_class,try 1)
}
весь код
crrri::perform_with_chrome(extra_args = c('--blink-settings=imagesEnabled=false'),function(client) {
Network <- client$Network
Page <- client$Page
Runtime <- client$Runtime
Network$enable() %...>% {
Page$enable()
} %...>% {
Network$setCacheDisabled(cacheDisabled = TRUE)
} %...>% {
Page$navigate(url = url)
} %...>% {
Page$loadEventFired()
} %...>% {
Sys.sleep(1)
} %...>% {
Runtime$evaluate(
expression = 'document.documentElement.outerHTML'
)
} %...>% (function(result) {
html <- result$result$value
#cat(html, "n")
})
})
}```
Ответ №1:
Вместо Sys.sleep
этого эта часть кода должна выглядеть примерно так.
} %...>% {
Page$loadEventFired()
} %>% wait(delay = 1) %...>% {
Runtime$evaluate(
expression = 'document.documentElement.outerHTML'
)