【问题标题】:Alternative to HtmlUnit替代 HtmlUnit
【发布时间】:2010-11-23 07:21:41
【问题描述】:

我一直在研究迄今为止可用的无头浏览器,并发现 HtmlUnit 被广泛使用。与 HtmlUnit 相比,我们是否有任何 HtmlUnit 替代品可能具有优势?

谢谢 奈恩

【问题讨论】:

    标签: screen-scraping web-crawler htmlunit headless-browser


    【解决方案1】:

    据我所知,HtmlUnit` 是最强大的无头浏览器。

    你有什么问题?

    【讨论】:

    • 对我来说,HtmlUnit 有两个杀手锏:1. 它独立于操作系统 2. 它不使用“真正的”浏览器作为后端。结果是零配置,应用程序部署没有意外。它做得很好。
    • 主要问题是它有时呈现的网页与实际浏览器中的外观不同。它还改变了页面/标签结构。我也想执行与 HtmlUnit 有一些问题的 javascript
    • HtmlUnit 无奈 f.g.反对 blog.com。它会因任何 JavaScript 错误而崩溃,f.g. wordpress.com 无法加载,因为 gravatar JavaScript 在我的网络中被阻止。
    • 您可以使用webClient.setThrowExceptionOnScriptError(false); 有效地忽略 Javascript 错误。
    【解决方案2】:

    还有许多其他库可供您使用。

    • 如果您需要抓取 xml 基础数据,请使用JTidy
    • 如果您需要从 HTML 中抓取特定数据,可以使用 Jsoup

    我使用 jsoup - 它比任何其他 API 都快。

    【讨论】:

    • Jsoup 很棒,但我猜它无法根据 AJAX 请求抓取网站。如果它是关于单击元素并等待其他 html 代码出现并对其进行评估,恕我直言,这不是一种选择。
    【解决方案3】:

    具有虚拟帧缓冲区的 WebDriver 是唯一真正的替代方案。优点是它使用的是真正的浏览器;缺点是设置起来比较麻烦,API也差很多。

    【解决方案4】:

    我将在我的用例中使用 Selenium,因为它让我可以使用真实的浏览器,并且与 HtmlUnit 相比,它不会偏离它在现实世界中呈现的内容。 我计划使用 Selenium2,它集成了 WebDriver 并提供了很棒的 AP​​I 和很酷的修复。 谢谢 奈恩

    【讨论】:

    • 这也是我推荐的。 htmlunit 的 javascript 引擎在现实世界的网站上似乎经常崩溃。
    • Selenium 很好......除非你想使用例如SmartGWT JavaScript 组件...或者除非您想在合理的时间内将其部署在持续集成环境中...或者如果您想在没有 500-CPU 集群作为测试运行器的情况下运行压力测试等。
    • 那么 htmlunitdriver 的替代方案是什么? Bcoz 几个网络需要 javascript 才能完全正常工作...... :(
    【解决方案5】:

    我使用 webkit 作为无头浏览器,通过 Qt 的 Python 绑定:http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qtwebkit.html

    Webkit 是 Chrome 和 Safari 使用的渲染引擎,非常灵活。

    我选择它而不是 HtmlUnit 的原因之一是易于设置:

    sudo apt-get install python-qt4
    

    【讨论】:

      【解决方案6】:

      我也会推荐 Selenium。伟大的功能是您可以创建一个打开浏览器页面的客户端,您可以看到每一步发生的事情。此外,为自动化测试创建宏是另一个不错的功能。 但是,如果你需要从网页中抓取一些信息,HtmlUnit 比 selenium 更好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-20
        • 2013-06-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-30
        • 1970-01-01
        相关资源
        最近更新 更多