嗨,我正在使用 crrri R 包构建刮板,我有一个异步函数来转储 DOM,但即使我在循环中有 Page$loadEventFired(),我仍然会得到空白。
试图创建运行时事件,该事件将等到我从页面中获取元素,但我对承诺感到困惑,无法让它发挥作用。有任何想法吗?
等待函数
if(try<10 & 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")
})
})
}```