JSOUP-访问div类中的元素/到达特定的div类时停止

时间:2018-06-29 09:17:25

标签: android html jsoup

我正在尝试从HTML解析数据。我需要从html代码中获取特定的内容,其顺序或html内容可能会有所不同。

<h1>Latest Deals</h1>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n
<div class=\"breadcrumb-wrapper\">\r\n    
<ul class=\"breadcrumb\">\r\n        
<li><a href=\"/Home\">Home</a></li>\r\n        
<li><a href=\"/Deals\">Deals</a></li>\r\n        
<li class=\"active\">Mau Mudik Hemat? Nikmati Diskon Hingga 20%</li>\r\n 
</ul>\r\n</div>\r\n\r\n
<div class=\"article outer clearfix\">\r\n    
<div class=\"col-sm-12\">\r\n        
<img alt=\"Mau Mudik Hemat? Nikmati Diskon Hingga 20%\" title=\"Mau Mudik Hemat? Nikmati Diskon Hingga 20%\" src=\"/images/slider/id/special-raya-offer-id-v2.jpg\">\r\n        
<h1>Mau Mudik Hemat? Nikmati Diskon Hingga 20%</h1>\r\n        
<p class=\"date\">May 18th, 2018</p>\r\n        
<p><strong class=\"text-red\"></strong></p>\r\n\r\n        
<p>This is the first paragraph</p>\r\n\r\n        
<p>This is the second paragraph.</p>\r\n\r\n        
<p>This is the third paragraph</p>\r\n\r\n        
<p>Below is the point form start:</p>\r\n\r\n        
<ol>\r\n            
<li>Point form A</li>\r\n            
<li>Point form B</li>\r\n            
<li>Point form C</li>\r\n            
<li>Point form D</li>\r\n            
</ol>\r\n\r\n\r\n\r\n        
<div class=\"m-top30 m-bottom20\">\r\n    
<a href=\"/home\" class=\"btn btn-lg btn-orange\">Home</a>\r\n\r\n    \r\n\r\n\r\n</div>\r\n\r\n\r\n

以前,我已经通过以下方式成功获取了想要的内容:

Document doc = Jsoup.parse(content);
Element eTitle = doc.getElementsByTag("h1").get(1);
Elements eBody = doc.getElementsByTag("p");

for (Element body : eBody) {
   detailContent += "<p>" + body.html() + "</p>";

我上面的代码从我的长html代码中获取了第一个“ h1”和所有带有“ p”的元素。但是,现在在某些情况下,我可能在那些“ p”之间具有元素“ ol”。例如:

<div class=\"col-sm-12\">\r\n <img alt=\"abc\" title=\"abcd\" src=\"/images/slider/id/abcd.jpg\">\r\n 
<h1>This is the header</h1>\r\n
<p class=\"date\">November 4th, 2015</p>\r\n 
<p><strong class=\"text-red\">Sorry, this promotion has expired.</strong></p>\r\n  
<p> Paragraph 1 </p>\r\n
<p> Paragraph 2 </p>\r\n
<ol>\r\n            
<li> Point 1 </li>\r\n            
<li> Point 2 </li>\r\n            
</ol>\r\n
<p> Paragraph 3 </p>\r\n
<p> Paragraph 4 </p>\r\n
<ol>\r\n            
<li> Point 1 </li>\r\n            
<li> Point 2 </li>\r\n            
</ol>\r\n
<div class=\"m-top30 m-bottom20\">

我应该如何创建代码以获取所有这些项目?
* P.s我要做的就是
1)获取“ col-sm-12” div中的元素/“ m-top30 m-bottom20”之前的最后一个元素
2)忽略“ col-sm-12”中包含的某些元素

1 个答案:

答案 0 :(得分:1)

将选择器更改为CSS并在第一个div下添加过滤器(例如“ p”)可以为您提供帮助。但是从上面的html尚不清楚第一个div是否在第二个div开始之前结束。如果您分享有关html的更多详细信息,也许我们可以优化选择器。我已经在代码注释中陈述了假设/我的理解。

ROLLUP