好的Java网页呈现库

好的Java网页呈现库,java,html,html-parsing,rendering,Java,Html,Html Parsing,Rendering,我需要一个好的网页渲染库,以便我可以提取所有链接(包括锚文本,基础超链接,网页上的链接的绝对位置)从网页 我一直在使用CSSBox库,但是,渲染框模型中缺少href属性。换句话说,我只能单独使用CSSBox获得锚文本和链接的位置。我必须利用锚文本和另一个html解析库(例如Jsoup)来获取href属性(即事实上的URL) 是否有任何库可以更好地实现我的目标?编辑 如果您需要一个解析器,这样您就可以查看HTML页面的所有链接并执行任何需要执行的操作,我推荐Jericho 是一个java库,允许分

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

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

是否有任何库可以更好地实现我的目标?

编辑

如果您需要一个解析器,这样您就可以查看HTML页面的所有链接并执行任何需要执行的操作,我推荐Jericho

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

它简单小巧,性能良好

推荐 考虑使用:

它汇集了
WebDriver
的强大功能和
jQuery
内容选择,
页面对象的健壮性
建模和
Groovy
语言的表达能力

它可以用于脚本编写、刮取和一般自动化,或者 作为功能/网络/验收测试解决方案,通过 与测试框架的集成,如
Spock
JUnit
TestNG

要求 如前所述,这仅适用于开放使用的情况。然而,由于Groovy很容易与Java集成,这通常不是问题

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

用法 从:

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

例如:

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.
     """
  }
}

你可能想看看。它不是一个渲染器,而是一个没有GUI的浏览器。它甚至支持各种JavaScript引擎和ActiveX


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

JavaFX的WebEngine可能适合您:


我不会称之为易用或轻量级,但请看一看。

您可以非常轻松地使用它。每个
ElementBox
实例都有获取相应DOM元素的
getElement()
。这意味着,使用表示呈现链接的元素框
a
,可以使用
a.getElement().getAttribute(“href”)
获取目标url。另请参见中的相关主题。

您能用Jericho呈现网页吗?OP想知道某个元素在网页上的“绝对位置”(尽管我怀疑这与渲染器无关)。不幸的是,我在Jericho中找不到任何方法可以为我检索html元素的位置。不,我很抱歉。我将编辑我的回答Jerry是否提供了检索html元素位置的函数?@TerryLi在什么意义上?在父母内部?是,通过使用
索引
。元素在页面上的绝对位置,即x和y坐标。@TerryLi,否这严格用于html解析。非常抱歉,我误读了你的问题。我没有看到绝对定位要求。@TerryLi希望我更新的答案对你更有用。抱歉搞砸了…我没注意到…你是我的救命恩人!谢谢