Как я могу напечатать содержимое этой таблицы HTML, используя JSoup? - PullRequest
0 голосов
/ 25 ноября 2018

Я начну с утверждения, что работа с HTML и JSoup в этом отношении очень чужды мне, поэтому, если это звучит глупо, я прошу прощения.

Чего я пытаюсь достичь с помощью своегокод для печати содержимого из таблицы по этой ссылке https://www.stormshield.one/pve/stats/daviddean/sch в мою консоль в формате, подобном следующему для каждой записи:

Настенный пусковой механизм 50 класс оценка класс оценка класс 15% ImpactKnockback 42% ОбновитьСкорость 15% Impact Knockback 42% Скорость перезарядки 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());
        }
    }

}

1 Ответ

0 голосов
/ 25 ноября 2018

Вам нужно найти элемент таблицы, его заголовок и строки.

Будьте осторожны, это не всегда первый элемент (), я добавлю его в качестве примера.

Здесьэто то, что вам нужно сделать:

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());
}

Вывод:

enter image description here

...