使用纯Java从HTML doc中使用xpath提取内容

时间:2012-03-19 08:05:10

标签: java html xpath

我想使用Java使用xpaths从HTML中提取内容。在ruby中,我可以使用nokogiri执行此操作,如此处所示。

xpath = '/html/body/div/div[2]/div[2]/div/div[2]/div[3]/p'  
doc = Nokogiri::HTML(open('test_001_html64.html'))  
doc.xpath().each do |link|  
puts link.content  
end  

我想用纯Java做。我查看了Jsoup,但是我找不到任何使用xpath执行此操作的文档或示例。有人可以建议吗?

谢谢

3 个答案:

答案 0 :(得分:1)

以下是使用JAXP(捆绑在Java中)执行此操作的方法:JAXP Manual

答案 1 :(得分:0)

您可以使用HtmlUnit执行该任务。

这是一个简单的例子:

final WebClient webClient = new WebClient();
final HtmlPage startPage = webClient.getPage("http://www.google.com/");
List<DomNode> nodes = page.getByXPath("/html/body/div/div[2]/div[2]/div/div[2]/div[3]/p");
for (DomNode node : nodes) {
    System.out.println(node.getNodeName());
}

答案 2 :(得分:-2)

您可以在jsoup中轻松完成此操作。

Document doc = Jsoup.connect("test_001_html64.html").get();
Elements info = doc.getElementsByTag("html");
//iterate recursively to the desired location in the dom tree.

为了更快地解析,您可以使用特定的标签/ ID。

jsoup(jsoup.org/apidocs)的文档也存在。