0

下面是两个具有“功能、应用和优势”标签的网页,这里我只想提取“功能”标签的内容。一个网页在第一个选项卡中具有“功能”,而其他网页具有“好处”而不是“功能”选项卡。

http://www.eaton.com/Eaton/ProductsServices/Hydraulics/Accumulators/PCT_256248 http://www.eaton.com/Eaton/ProductsServices/Vehicle/Superchargers/RSeries/index.htm#tabs-2

尝试过的方法: 通过使用“下面的代码”和 xpath("//a[span='Features']/../../../div/div") 我能够获取所有选项卡的内容出现在网页中。但是,我的问题是我正在寻找通用的“xpath”,它应该只在网页中获取“功能”的内容,如果“功能”选项卡不存在,它不应该显示任何内容。

 HtmlCleaner htmCleaner = new HtmlCleaner();
   String s = "http://www.eaton.com/Eaton/ProductsServices/Hydraulics/Accumulators/PCT_256248";
   Document doc =  Jsoup.connect(s).timeout(30000).userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.120 Safari/535.2").get();
   String pageContent=doc.toString();
   TagNode node = htmCleaner.clean(pageContent);
   Object[] statsNode = node.evaluateXPath("//a[span='Features']/../../../div/div");
   for(int i=0;i<statsNode.length;i++){
   TagNode resultNode = (TagNode) statsNode[i];
   System.out.print(resultNode.getText());
   }
4

1 回答 1

1

请注意,目标div id对应于href选项卡标题的属性。例如,当href属性值为时"#tabs-1",对应的div id属性值为"tabs-1"

利用这种相关性,这是一种可能的 XPath,它将返回<div>对应于Features链接/选项卡的元素,或者在没有Features选项卡的情况下不返回任何内容:

//div[concat('#', @id)=preceding::a[span='Features']/@href]
于 2015-08-10T09:18:39.360 回答