用于访问特定选项卡内容的通用xpath(如果存在)

时间:2015-08-10 08:24:39

标签: java xpath htmlcleaner

以下是两个网页,其中包含"功能,应用和优势"这里我想要的标签  只提取"特征"的内容。标签。一个网页有"功能"在第一个选项卡和  其他网页有"好处"而不是"功能"标签

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 ='功能'] /../../../ div / div")我能够  获取网页中存在的所有标签的内容。但是,我的问题是我正在寻找  对于通用" xpath" ,只能获得#34;特征"在一个网页,它应该  如果"功能"不显示任何内容选项卡不存在。

 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());
   }

1 个答案:

答案 0 :(得分:1)

请注意,目标div id对应标签页眉的href属性。例如,当href属性值为"#tabs-1"时,相应的div id属性值为"tabs-1"

利用这种相关性,这是一个可能的XPath,它将返回与<div>链接/制表符对应的Features元素,或者在没有Features制表符时返回任何内容:

//div[concat('#', @id)=preceding::a[span='Features']/@href]