簡體   English   中英

如何使用JSoup打印此HTML表的內容?

[英]How can I print the contents of this HTML table using JSoup?

首先,我要指出的是,對HTML和JSoup進行處理對我來說是非常陌生的,因此,如果這是一個愚蠢的問題,我深表歉意。

我想用我的代碼實現的目的是以每個條目的這種格式將鏈接https://www.stormshield.one/pve/stats/daviddean/sch上表格的內容打印到控制台中:

牆壁發射器50級等級等級等級等級15%ImpactKnockback 42%裝彈速度15%Impact Knockback 42%Reload Speed 15%ImpactKnockback 42%耐久性

我的主要問題是為表和行提供正確的名稱,一旦我能做到,格式化對我來說就不是真正的問題。

這是我嘗試使用的代碼,但無濟於事:

    public static void main(String[] args) throws IOException {

    Document doc = Jsoup.connect("https://www.stormshield.one/pve/stats/daviddean/sch").get();

    for (Element table : doc.select("table schematics")) {
        for (Element row : table.select("tr")) {
            Elements tds = row.select("td");
                System.out.println(tds.get(0).text() + ":" + tds.get(1).text());
        }
    }

}

您需要找到表格元素,即表頭和行。

注意,它並不總是first()元素,我將其添加為示例。

這是您需要做的:

Document doc = null;
try {
    doc = Jsoup.connect("https://www.stormshield.one/pve/stats/daviddean/sch").get();
} catch (IOException e) {
    e.printStackTrace();
}

Element table = doc.body().getElementsByTag("table").first();

Element thead = table.getElementsByTag("thead").first();

StringBuilder headBuilder = new StringBuilder();

for (Element th : thead.getElementsByTag("th")) {
    headBuilder.append(th.text());
    headBuilder.append(" ");
}

System.out.println(headBuilder.toString());

Element tbody = table.getElementsByTag("tbody").first();

for (Element tr : tbody.getElementsByTag("tr")) {
    StringBuilder rowBuilder = new StringBuilder();

    for (Element td : tr.getElementsByTag("td")) {
        rowBuilder.append(td.text());
        rowBuilder.append(" ");
    }
    System.out.println(rowBuilder.toString());
}

輸出為:

在此處輸入圖片說明

暫無
暫無

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

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