【问题标题】:Good Java Web Page Rendering Libraries [closed]优秀的 Java 网页渲染库 [关闭]
【发布时间】:2012-10-05 00:03:51
【问题描述】:

我需要一个好的页面渲染库,以便我可以从网页中提取所有链接(包括锚文本、底层超链接、链接在页面上的绝对位置)。

我一直在使用 CSSBox 库,但是渲染的盒子模型中缺少 href 属性。换句话说,我只能单独使用 CSSBox 获取链接的锚文本和位置。我必须利用锚文本和另一个 html 解析库(例如 Jsoup)来获取 href 属性(即事实上的 URL)。

有没有什么库可以更好地实现我的目标?

【问题讨论】:

    标签: java html html-parsing rendering


    【解决方案1】:

    你可以很容易地用CSSBox 做到这一点。每个ElementBox 实例都有getElement() 获取对应的DOM Element。这意味着,有一个元素框a 代表呈现的链接,您可以使用a.getElement().getAttribute("href") 获取目标url。另请参阅CSSBox discussion forum 中的相关主题。

    【讨论】:

    • 天啊...我没有注意到...你是我的救星!谢谢。
    【解决方案2】:

    推荐

    考虑使用Geb:

    它汇集了WebDriver 的力量,jQuery 的优雅 内容选择、Page Object 建模的稳健性和 Groovy 语言的表现力。

    它可用于编写脚本、抓取和一般自动化 - 或 同样作为功能/网络/验收测试解决方案,通过 与Spock、JUnit和TestNG等测试框架集成。

    要求

    如前所述,这仅适用于您愿意使用Groovy。不过,由于 Groovy 很容易与 Java 集成,这通常不是问题。

    此外,这将需要一个浏览器。我不确定这是否会破坏您的交易。

    用法

    来自docs:

    您可以获取页面上内容的大小和位置。所有单位 以像素为单位。尺寸可通过高度和宽度获得 属性,而位置可用作 x 和 y 属性 表示到页面左上角(或父级)的距离 frame) 到内容的左上角。

    例如:

    Browser.drive {
      // Load the page
      go "http://myapp.com"
    
      // $("a") returns all hyperlinks on the page, similar to jQuery
      $("a").each { a ->
         // Display the required link properties and attributes
         println """
            The link to '${a.@href}' with text '${a.text()}' is at location (${a.x}, ${a.y}),
            with a height of ${a.height}px and a width of ${a.width}px.
         """
      }
    }
    

    【讨论】:

    • Jerry 是否提供了检索 html 元素位置的功能?
    • @TerryLi 在什么意义上?在父母之内?是的,通过使用index。
    • 一个元素在页面上的绝对位置,即x和y坐标。
    • @TerryLi,不,这仅限于 html 解析。我非常抱歉,因为我误读了你的问题。我没有看到绝对定位要求。
    • @TerryLi 希望我的更新答案对您更有用。很抱歉造成混乱
    【解决方案3】:

    JavaFX 的 WebEngine 可能适合您:http://docs.oracle.com/javafx/2/api/javafx/scene/web/WebEngine.html

    我不会说它易于使用或轻量级,但看看吧。

    【讨论】:

      【解决方案4】:

      编辑

      如果你需要一个解析器,这样你就可以看到一个 HTML 页面的所有链接并做任何你需要做的事情,我推荐 Jericho。

      Jericho HTML Parser 是一个 java 库,允许分析和操作 HTML 文档的各个部分,包括服务器端标签,同时逐字复制任何无法识别或无效的 HTML。它还提供高级 HTML 表单操作功能。

      简单又小巧,性能不错

      【讨论】:

      • 你能用 Jericho 渲染一个网页吗? OP 想知道网页上某个元素的“绝对位置”(尽管我怀疑这与渲染器无关)。
      • 不幸的是,我在 Jericho 中找不到任何方法可以为我检索 html 元素的位置。
      • 不,对不起。我会编辑我的答案
      【解决方案5】:

      您可能想看看http://htmlunit.sourceforge.net。它不是一个渲染器,而是一个无 GUI 的浏览器。它甚至支持各种 JavaScript 引擎和 ActiveX。

      但是我很确定您不能使用它来跟踪任何元素的位置,因为它实际上并没有呈现网页。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-16
        • 1970-01-01
        • 1970-01-01
        • 2010-10-05
        • 1970-01-01
        相关资源
        最近更新 更多