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