5
回答
用JSOUP解析HTML,怎样删除掉其中的一段DIV标签及内容?
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   
需求是这样的,做了一个新闻客户端,想用WEBVIEW显示新闻的内容,所以就涉及到HTML的解析,截取HTML里自己想要的内容,网上看了下 JSOUP 解析HTML挺方便的,但是关于JSOUP的教程太少了,只能靠官方的文档,目前 新闻内容已经获取到了,但是有部分新闻不止一页,还有下一页,下一页等,如果遇到这种新闻,则内容DIV的标签下 就会多出很多标签,如新闻转发的,更多新闻的等等 。HTML代码如下:

<div id="content"> 这里是新闻的内容 (只想获取这部分内容,但下边还有其它的DIV标签,这个如何删掉呢?) 
  <div class="page">
    <div class="pagenum"><span>第1页</span><a href="/html/693/2012/0419/090657_1.html">第2页</a><a href="/html/693/2012/0419/090657_2.html">第3页</a>
    </div>
</div>
            <div class="zebian_nav">
              (责任编辑:某某某)
           </div>
           
               <div class="title_name">相关文章:</div>
              <div class="news_list">
                <ul><li>·<a href="/html/693/2012/0418/114149.html" target="_blank">11投行痛失17单IPO3项目挂科 平安最郁闷</a></li><li>·<a href="/html/693/2012/0418/114710.html" target="_blank">一季度PE平均账面回报率3.7倍 创两年来新低</a></li><li>·<a href="/html/1236/2012/0418/144200.html" target="_blank">淄博高新区架起企业与上海交大的合作桥梁</a></li><li>·<a href="/html/693/2012/0417/094447.html" target="_blank">一季度清洁能源投资创三年来最低</a></li><li>·<a href="/html/693/2012/0417/112101.html" target="_blank">绿盟信息IPO“PE当家”:3大PE持股比例高达66%</a></li><li>·<a href="/html/693/2012/0417/112301.html" target="_blank">PE之都遭尴尬 改变PE食物链?</a></li><li>·<a href="/html/693/2012/0417/134810.html" target="_blank">湖南20家企业排队IPO PE融资额年均增长超50%</a></li></ul>            
              </div>
            
</div>------这里是新闻内容<div id="content"> 的结束标签,我想把里面的CLASS都去掉,不知道如何写。


JAVA代码如下:

try {
     if(inStream == null){
      Toast.makeText(NewsShowActivity.this, "内容不存在,或网络连接错误", 2000).show();
     }
     if(inStream != null){
     doc = Jsoup.parse(inStream, "gb2312", " http://www.xxx.com/");
     }
    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
    content_nr = doc.getElementById("content");   //根据HTML里的ID获取内容     
   //这里怎么删除<div id="content">标签下无用的内容呢?    求朋友帮帮忙哈。不胜感激!
    webView.loadData(content_nr.html(), "text/html", "UTF-8");
举报

content_nr.select("div").remove()

清除该Element下的所有div,OK?

content_nr.select("div").removeAttr("class")

class属性都去掉。
内容里面有div的话,就

content_nr.select("div.page").remove()

删除分页div,其它的自己去写吧。

--- 共有 1 条评论 ---
henku126henkulzh12我按您 的意思写了下。 想删除分页div,结果反变成只显示分页DIV里的内容了,其它内容均不显示。 代码我是这样写的 content_nr = doc.select("#content"); content_nr = content_nr.select("div.page").remove(); 6年前 回复

我按您 的意思写了下。 想删除分页div,结果反变成只显示分页DIV里的内容了,其它内容均不显示。

代码我是这样写的

content_nr = doc.select("#content");

content_nr  = content_nr.select("div.page").remove();

--- 共有 2 条评论 ---
Andre.Z只写content_nr.select("div.page").remove()就行了,不要赋值,谢谢,你看下remove会返回什么。 6年前 回复
Andre.Z你后面赋值做什么??? 6年前 回复

换个角度,不删除,只是用的时候直接用continue忽视掉;

Elements els = doc.getElementsByTag("div");

foreach(Element el :els)
{
    if(el == els.get(1)) //如果是页面中第2个div,直接跳到下一轮循环,不执行下面的操作
    {
         continue;      
    }
    //其他操作

}

(Element).ownText()   不知道行不行;

Gets the text owned by this element only; does not get the combined text of all children.

获取它本身的text;不获取它的子标签中的text

 

顶部