我正在使用WebDriver从页面中检索所有文本(注意,我想要整个DOM,而不仅仅是HTML文档中的任何内容,这就是我目前正在使用WebDriver的原因)。
我通过搜索By.cssSelector("*")
创建所有元素的列表,然后使用getText()
遍历所有元素。这很有效,唯一的问题是它很慢。复杂页面大约需要40秒。我尝试使用"body *"
作为CSS选择器来节省时间,但它只节省了10%。我也使用Chrome而不是FF,因为Chrome的速度要快得多。
有什么建议可以加快速度吗?我认为浏览器会增加很多开销,但我不知道除WebDriver之外的其他方法来检索网页的整个DOM。从我所看到的,像Jsoup这样的东西只会给你HTML文档的DOM,但是你在浏览器上看到的页面不仅仅是HTML(可能有来自js,json等的文本)
答案 0 :(得分:0)
它可能不是浏览器的减速,而是代码与它之间的接口。在幕后,WebDriver正在为您迭代的每个元素对驱动程序进行单独的HTTP调用(然后将其传递给浏览器)。即使这很快,您也可以为DOM中的每个元素执行此操作。尝试将javascript注入浏览器(通过webdriver)来收集所有文本并将其作为String返回给您的代码。您可以通过一次WebDriver调用来完成此操作。