当前位置: 代码迷 >> java >> 从网页的整个DOM获取所有文本的更快方法
  详细解决方案

从网页的整个DOM获取所有文本的更快方法

热度:8   发布时间:2023-07-17 20:48:42.0

我正在使用WebDriver来检索页面中的所有文本(请注意,我需要整个DOM,而不仅仅是HTML文档中的任何内容,因此这就是我当前使用WebDriver的原因)。

我通过搜索By.cssSelector("*")创建所有元素的列表,然后使用getText()遍历所有元素。 这很好用,唯一的问题是它相当慢。 复杂的页面大约需要40秒。 我尝试使用"body *"作为CSS选择器来节省时间,但它仅节省了10%。 我也使用Chrome而不是FF,因为Chrome的速度要快得多。

有什么建议可以加快速度吗? 我想象浏览器会增加很多开销,但是除了WebDriver之外,我不知道其他方法来检索网页的整个DOM。 据我所知,诸如Jsoup之类的东西只会为您提供HTML文档的DOM,但是您在浏览器上看到的页面不仅限于HTML(可能是来自js,json等的文本)

放慢速度的可能不是浏览器,而是代码与其之间的接口。 在幕后,WebDriver会对迭代的每个元素进行单独的HTTP调用(然后将其传递给浏览器)给驱动程序。 即使那非常快,您也要为DOM中的每个元素都这样做。 尝试将javascript注入浏览器(通过webdriver)以收集所有文本并将其作为字符串返回给您的代码。 您可以通过单个WebDriver调用来完成此操作。

  相关解决方案