簡體   English   中英

使用 JSoup 解析特定文本值

[英]Parsing a specific text value with JSoup

在此處輸入圖像描述

在此處輸入圖像描述

嘿,有人知道如何解析“小雨”、“7°C”和“有限”嗎? 這些存儲為#text,所以這有點讓我失望。 作為參考,要解析“溫度:”,它將是 Element element5 = doc.select("strong").get(3); 謝謝!

您示例中的節點稱為文本節點 在 Jsoup 中,您可以使用text()方法讀取節點的文本節點。 因此,鑒於您使用 Jsoup 的示例,我們將 select td元素,然后使用text()獲取它的文本值。

但是,這也將 output 來自任何子節點的文本值,因此在您的情況下,這將產生Weather: Light rain作為單個字符串。 幸運的是,Jsoup 還有一個ownText()方法,它只從作為元素的直接后代(而不是所有子元素)的文本節點中提取值。 因此,鑒於您的示例代碼,您可以這樣編寫:

Element element5 = doc.select("td").get(3);
String value = element5.ownText()

您可以使用多種方法來提取所需的文本,其中之一是td.childNode(1).toString() ,下面提到了完整的解決方案:

   public static void main(String[] args) {


    // Parse HTML String using JSoup library

    String HTMLSTring = "<html>\n" +
            " <head></head>\n" +
            " <body>\n" +
            "  <table class=\"table\"> \n" +
            "   <tbody>\n" +
            "    <tr> \n" +
            "     <td><strong>Weather: </strong>Light Rain</td> \n" +
            "    </tr> \n" +
            "    <tr> \n" +
            "     <td><strong>Tempratue: </strong>70 C</td> \n" +
            "    </tr> \n" +
            "    <tr> \n" +
            "     <td><strong>Visibility: </strong>Limited</td> \n" +
            "    </tr> \n" +
            "    <tr> \n" +
            "     <td><strong>Runs open: </strong>0</td> \n" +
            "    </tr>\n" +
            "   </tbody>\n" +
            "  </table>\n" +
            " </body>\n" +
            "</html>"
            + "<head></head>";

    Document html = Jsoup.parse(HTMLSTring);
    Elements tds = html.getElementsByTag("td");
    for (Element td : tds) {
        //String tdStrongText = td.childNode(0).childNodes().get(0).toString();
        String tdStrongText = td.select("strong").text();
        System.out.print(tdStrongText + " : ");
        String tdText = td.childNode(1).toString();
        System.out.println(tdText);
    }
}

查看github上的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM