1. 程式人生 > >jsoup怎麼獲取兩個標籤之間的text?

jsoup怎麼獲取兩個標籤之間的text?

要處理的html 在這裡插入圖片描述



import com.easestrategy.ws.model.WsHtml;
import org.elasticsearch.client.transport.TransportClient;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.nodes.Node;
import org.jsoup.nodes.TextNode;
import org.jsoup.select.Elements;

import java.lang.reflect.Field;
import java.util.List;

/**
 * Created by cmyuan on 2018/9/30
 */
public class Test {
    private static TransportClient client;

    public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
       /* client = new ElasticsearchConfig().getElasticsearchClient();
        System.out.println(client.listedNodes());
        try {
            ElasticSearchUtil.createIndex();
        } catch (IOException e) {
            e.printStackTrace();
        }*/
        String html = "<a type='dir' name='WBSB'></a><div style='TEXT-ALIGN: center; LINE-HEIGHT: 25pt; MARGIN: 0.5pt 0cm; FONT-FAMILY: 宋體; FONT-SIZE: 22pt;'>浙江省遂昌縣人民法院</div><div style='TEXT-ALIGN: center; LINE-HEIGHT: 30pt; MARGIN: 0.5pt 0cm; FONT-FAMILY: 仿宋; FONT-SIZE: 26pt;'>刑 事 判 決 書</div><div style='TEXT-ALIGN: right; LINE-HEIGHT: 30pt; MARGIN: 0.5pt 0cm;  FONT-FAMILY: 仿宋;FONT-SIZE: 16pt; '>(2012)麗遂刑初字第205號</div><a type='dir' name='DSRXX'></a><div style='LINE-HEIGHT: 25pt;TEXT-ALIGN:justify;TEXT-JUSTIFY:inter-ideograph; TEXT-INDENT: 30pt; MARGIN: 0.5pt 0cm;FONT-FAMILY: 仿宋; FONT-SIZE: 16pt;'>公訴機關遂昌縣人民檢察院。</div><div style='LINE-HEIGHT: 25pt;TEXT-ALIGN:justify;TEXT-JUSTIFY:inter-ideograph; TEXT-INDENT: 30pt; MARGIN: 0.5pt 0cm;FONT-FAMILY: 仿宋; FONT-SIZE: 16pt;'>被告人金菊英,女,1977年10月17日出生於浙江省遂昌縣,漢族,初中文化,農民,戶籍地遂昌縣妙高街道(原妙高鎮)楓樹坪村陳坑12號。因本案於2012年6月25日被遂昌縣公安局刑事拘留,同年6月27日變更為取保候審。</div><div style='LINE-HEIGHT: 25pt;TEXT-ALIGN:justify;TEXT-JUSTIFY:inter-ideograph; TEXT-INDENT: 30pt; MARGIN: 0.5pt 0cm;FONT-FAMILY: 仿宋; FONT-SIZE: 16pt;'>被告人朱某,男,1970年6月29日出生於浙江省遂昌縣,漢族,初中文化,居民,戶籍地遂昌縣妙高街道西街75號。因本案於2012年6月25日被遂昌縣公安局取保候審。</div><a type='dir' name='SSJL'></a><div style='LINE-HEIGHT: 25pt;TEXT-ALIGN:justify;TEXT-JUSTIFY:inter-ideograph; TEXT-INDENT: 30pt; MARGIN: 0.5pt 0cm;FONT-FAMILY: 仿宋; FONT-SIZE: 16pt;'>遂昌縣人民檢察院以遂檢刑訴(2012)201號起訴書指控被告人金菊英、朱某犯信用卡詐騙罪,於2012年10月31日向本院提起公訴。本院依法適用簡易程式,實行獨任審判,公開開庭審理了本案。遂昌縣人民檢察院指派代理檢察員楊松出庭支援公訴,被告人金菊英、朱某等到庭參加了訴訟。現已審理終結。</div><a type='dir' name='AJJBQK'></a><div style='LINE-HEIGHT: 25pt;TEXT-ALIGN:justify;TEXT-JUSTIFY:inter-ideograph; MARGIN: 0.5pt 0cm;FONT-FAMILY: 仿宋; FONT-SIZE: 16pt;'>公訴機關指控:</div><div style='LINE-HEIGHT: 25pt;TEXT-ALIGN:justify;TEXT-JUSTIFY:inter-ideograph; TEXT-INDENT: 30pt; MARGIN: 0.5pt 0cm;FONT-FAMILY: 仿宋; FONT-SIZE: 16pt;'>2011年3月24日,被告人金菊英、朱某(系夫妻關係)共同到中國農業銀行股份有限公司遂昌縣支行分別申請了一張信用卡,其中被告人金菊英申領的信用卡卡號為×××2070,被告人朱某申領的信用卡卡號為×××5029。2011年4月,被告人金菊英、朱某從該銀行領取了各自的信用卡。嗣後,被告人朱某將其本人信用卡交由被告人金菊英使用。2011年8月24日,被告人金菊英分別從其申領的信用卡及被告人朱某申領的信用卡中透支人民幣9950元、15250元(上述賬戶之前結餘本金分別為246.91元、386.95元)。其後,該髮卡銀行在規定透支期限屆滿後,通過電話、催收通知書、報刊公告等方式多次向被告人金菊英、朱某催收透支款,但被告人金菊英、朱某在被催收兩次後且超過3個月仍未歸還透支款。</div><div style='LINE-HEIGHT: 25pt;TEXT-ALIGN:justify;TEXT-JUSTIFY:inter-ideograph; TEXT-INDENT: 30pt; MARGIN: 0.5pt 0cm;FONT-FAMILY: 仿宋; FONT-SIZE: 16pt;'>2012年4月17日,被告人朱某歸還其本人信用卡中透支款人民幣2400元;2012年5月3日,被告人金菊英歸還其本人信用卡中透支款人民幣1000元。至案發,被告人金菊英、朱某的信用卡中仍有透支款本金分別為人民幣8703.09元、12463.05元(利息及滯納金分別為人民幣2174.25元、3266.88元)。</div><div style='LINE-HEIGHT: 25pt;TEXT-ALIGN:justify;TEXT-JUSTIFY:inter-ideograph; TEXT-INDENT: 30pt; MARGIN: 0.5pt 0cm;FONT-FAMILY: 仿宋; FONT-SIZE: 16pt;'>2012年6月25日,被告人金菊英、朱某在其租住房內被遂昌警方抓獲。歸案後,被告人金菊英、朱某如實供述了上述犯罪事實;案發後,被告人金菊英、朱某向中國農業銀行股份有限公司遂昌支行還清了透支款本息共計人民幣26580.27元。</div><div style='LINE-HEIGHT: 25pt;TEXT-ALIGN:justify;TEXT-JUSTIFY:inter-ideograph; TEXT-INDENT: 30pt; MARGIN: 0.5pt 0cm;FONT-FAMILY: 仿宋; FONT-SIZE: 16pt;'>上述事實,被告人金菊英、朱某在開庭審理過程中亦無異議,並有證人李某的證言;關於要求對金菊英、朱某信用卡惡意透支行為予以立案的報告;辦理信用卡的申請資料、工作單位證明材料、被告人金菊英、朱某的身份證影印件;金融許可證、法定代表人身份證明書及身份證影印件、交易資訊、催款通知書、催收基本資料(賬戶級)、催收賬戶交易歷史記錄、催收備忘歷史資訊、ems國內特快專遞郵件詳情單、信用卡逾期催收公告、中國農業銀行浙江省分行信用卡透支信函催收清單、催收資料詳細資訊;扣押物品、檔案清單、№0005794232浙江省預收(暫扣)款票據、還款證明;抓獲經過;被告人金菊英、朱某的戶籍證明等證據證實,足以認定。</div><a type='dir' name='CPYZ'></a><div style='LINE-HEIGHT: 25pt;TEXT-ALIGN:justify;TEXT-JUSTIFY:inter-ideograph; TEXT-INDENT: 30pt; MARGIN: 0.5pt 0cm;FONT-FAMILY: 仿宋; FONT-SIZE: 16pt;'>本院認為,被告人金菊英、朱某以非法佔有為目的,利用信用卡惡意透支,其中被告人金菊英惡意透支本金人民幣21139.14元,數額較大;被告人朱某惡意透支本金人民幣12463.05元,數額較大,二被告人的行為均已構成信用卡詐騙罪。公訴機關指控的罪名成立。被告人朱某在共同犯罪中起輔助作用,系從犯,應從輕處罰。被告人金菊英、朱某歸案後如實供述了自己的罪行,並當庭自願認罪,可從輕處罰;已還清了透支款本息,可酌情從輕處罰。為此,依照《中華人民共和國刑法》第一百九十六條第一款第(四)項、第二款、第二十七條、第六十七條第三款、第七十二條、第五十二條之規定,判決如下:</div><a type='dir' name='PJJG'></a><div style='LINE-HEIGHT: 25pt;TEXT-ALIGN:justify;TEXT-JUSTIFY:inter-ideograph; TEXT-INDENT: 30pt; MARGIN: 0.5pt 0cm;FONT-FAMILY: 仿宋; FONT-SIZE: 16pt;'>一、被告人金菊英犯信用卡詐騙罪,判處有期徒刑一年二個月,緩刑二年,並處罰金人民幣20000元(緩刑考驗期從判決執行之日起計算)。</div><div style='LINE-HEIGHT: 25pt;TEXT-ALIGN:justify;TEXT-JUSTIFY:inter-ideograph; TEXT-INDENT: 30pt; MARGIN: 0.5pt 0cm;FONT-FAMILY: 仿宋; FONT-SIZE: 16pt;'>二、被告人朱某犯信用卡詐騙罪,判處有期徒刑六個月,緩刑一年,並處罰金人民幣20000元(緩刑考驗期從判決執行之日起計算)。</div><div style='LINE-HEIGHT: 25pt;TEXT-ALIGN:justify;TEXT-JUSTIFY:inter-ideograph; TEXT-INDENT: 30pt; MARGIN: 0.5pt 0cm;FONT-FAMILY: 仿宋; FONT-SIZE: 16pt;'>罰金限判決生效後一個月內繳納。</div><div style='LINE-HEIGHT: 25pt;TEXT-ALIGN:justify;TEXT-JUSTIFY:inter-ideograph; TEXT-INDENT: 30pt; MARGIN: 0.5pt 0cm;FONT-FAMILY: 仿宋; FONT-SIZE: 16pt;'>如不服本判決,可在接到判決書的第二日起十日內,通過本院或者直接向浙江省麗水市中級人民法院提出上訴。書面上訴的,應當提交上訴狀正本一份,副本二份。</div><a type='dir' name='WBWB'></a><div style='TEXT-ALIGN: right; LINE-HEIGHT: 25pt; MARGIN: 0.5pt 72pt 0.5pt 0cm;FONT-FAMILY: 仿宋; FONT-SIZE: 16pt;'>審 判 員 秦金芽</div><br/><div style='TEXT-ALIGN: right; LINE-HEIGHT: 25pt; MARGIN: 0.5pt 72pt 0.5pt 0cm;FONT-FAMILY: 仿宋; FONT-SIZE: 16pt;'>二〇一二年十一月七日</div><div style='TEXT-ALIGN: right; LINE-HEIGHT: 25pt; MARGIN: 0.5pt 72pt 0.5pt 0cm;FONT-FAMILY: 仿宋; FONT-SIZE: 16pt;'>代書記員 藍 利</div>\n" +
                "\n" +
                "\n";

        Document document = Jsoup.parse(html);
        Element body = document.body();
        Elements allElements = body.select("body>*");
        Elements flagElements = body.getElementsByTag("a");
        WsHtml wsHtml = new WsHtml();
        for (int i = 0; i < flagElements.size(); i++) {
            Element element = flagElements.get(i);
            int crtFlagIndex = element.elementSiblingIndex();
            if (crtFlagIndex == 0) {
                continue;
            }
            StringBuffer sb = new StringBuffer();
            Element preElement = flagElements.get(i - 1);
            int preFlagIndex = preElement.siblingIndex();
            String name = preElement.attr("name").toLowerCase();
            for (int j = 0; j < allElements.size(); j++) {
                int eleIndex = allElements.get(j).siblingIndex();
                //獲取上一個的index
                if (eleIndex <= preFlagIndex) {
                    continue;
                }
                if (eleIndex >= crtFlagIndex) {
                    setProperty(wsHtml, name, sb.toString());
                    //如果為最後一條標誌,其後續還有序號,則需要把後面的資料全部匯入
                    if (i == flagElements.size() - 1 && crtFlagIndex < allElements.size() - 1) {
                        StringBuffer lastSb = new StringBuffer();
                        for (int k = crtFlagIndex + 1; k < allElements.size(); k++) {
                            lastSb.append(allElements.get(k).text());
                        }
                        String lastName = element.attr("name").toLowerCase();
                        setProperty(wsHtml, name, lastSb.toString());
                    }
                    break;
                }
                sb.append(allElements.get(j).text());
            }
        }
        //獲取到的結果
	  System.out.println(wsHtml);
    }

    public static void setProperty(Object obj, String PropertyName, Object value)
            throws NoSuchFieldException, SecurityException,
            IllegalArgumentException, IllegalAccessException {
        // 獲取obj類的位元組檔案物件
        Class c = obj.getClass();
        // 獲取該類的成員變數
        Field f = c.getDeclaredField(PropertyName);
        // 取消語言訪問檢查
        f.setAccessible(true);
        // 給變數賦值
        f.set(obj, value);
    }
}

實體類

package com.easestrategy.ws.model;

/**
 * Created by cmyuan on 2018/10/11
 * 文書html中各個模組的解析
 */
public class WsHtml {
    /**
     * 文字首部
     */
    private String wbsb;
    /**
     * 當事人資訊
     */
    private String dsrxx;
    /**
     * 實時記錄
     */
    private String ssjl;
    /**
     * 按鍵基本情況
     */
    private String ajjbqk;
    /**
     * 裁判要旨
     */
    private String cpyz;
    /**
     * 判決結果
     */
    private String pjjg;
    /**
     * 文字尾部
     */
    private String wbwb;

    public String getWbsb() {
        return wbsb;
    }

    public void setWbsb(String wbsb) {
        this.wbsb = wbsb;
    }

    public String getDsrxx() {
        return dsrxx;
    }

    public void setDsrxx(String dsrxx) {
        this.dsrxx = dsrxx;
    }

    public String getSsjl() {
        return ssjl;
    }

    public void setSsjl(String ssjl) {
        this.ssjl = ssjl;
    }

    public String getAjjbqk() {
        return ajjbqk;
    }

    public void setAjjbqk(String ajjbqk) {
        this.ajjbqk = ajjbqk;
    }

    public String getCpyz() {
        return cpyz;
    }

    public void setCpyz(String cpyz) {
        this.cpyz = cpyz;
    }

    public String getPjjg() {
        return pjjg;
    }

    public void setPjjg(String pjjg) {
        this.pjjg = pjjg;
    }

    public String getWbwb() {
        return wbwb;
    }

    public void setWbwb(String wbwb) {
        this.wbwb = wbwb;
    }
}