微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 phantomjs 会话中搜索元素或先提取源代码的区别?

如何解决在 phantomjs 会话中搜索元素或先提取源代码的区别?

考虑以下伪代码

pjs <- webdriver::run_phantomjs()
ses <- webdriver::Session$new(port = pjs$port)
ses$go("$randomurl$")

问题:

将接近 1) 和 2) 产生相同数量的元素/节点给定 任意$ANY_XPATH$

1)

ses$findElements(xpath = $ANY_XPATH$)
elem <- ses$findElement(xpath = "/*")
doc <- elem$getAttribute(name = "innerHTML") %>% xml2::read_html()
doc %>% rvest::html_nodes(xpath = $ANY_XPATH$)

我为什么要问?

我意识到某些类似以下的页面无法完全呈现:

url <- "https://www.bs-krohn.de/#bewerber"
ses$go(url)
ses$takeScreenshot()
browseURL(url)

显然,这更像是一个额外的挑战,但它让我想知道我是否可以节省 使用方法 2。我更喜欢方法 2,因为它比方法 1 快。

我最好的猜测...

... 1) 和 2) 应该相等,到目前为止我无法凭经验证伪该假设。

我目前的理解是 phantomjs 作为无头浏览器,呈现包含所有要触发的 javascript 片段的页面。所以

elem <- ses$findElement(xpath = "/*")
doc <- elem$getAttribute(name = "innerHTML") %>% xml2::read_html()

可能相当于在非无头浏览器中执行“右键单击 -> 显示代码”。但我当然不是 phantomjs 的专家,无法判断是否可能存在一些延迟加载(?)或其他我不知道的事情。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。