Java получить массив из проанализированной HTML-таблицы - PullRequest
0 голосов
/ 12 января 2019

Я хочу получить данные из таблицы в массиве из Java

Я уже проанализировал данные из таблицы и сохранил их в строке. Но каждый ряд новой строки в моей строке. Я хочу собрать все строки в одном массиве.

My String x выводит каждую цену в новой строке:

$25,913,000
$40,388,000
$48,995,000
$3,956,000
$12,087,000
$131,339,000
$170,799,000
$41,304,000
$0
$0
$22,283,000
$0
$365,725,000
$55,888,000
$20,748,000
$40,230,000
$116,866,000
$93,735,000
$45,180,000
$2,797,000
$0
$0
$258,578,000
$40,201,000
$0
$70,400,000
$0
($3,454,000)
$107,147,000
$365,725,000

Это мой код

try {

        org.jsoup.nodes.Document doc = (org.jsoup.nodes.Document) Jsoup.connect(url_balance_year).userAgent("Mozilla/5.0").get();
        Elements trs = doc.select("tr");

        for (org.jsoup.nodes.Element tr : trs) {

            Elements tds = tr.select(".td_genTable");

            if (tds.size() == 0) continue;

            org.jsoup.nodes.Element td = tds.first().siblingElements().first();

            org.jsoup.nodes.Element td1 = tds.first().nextElementSibling();

            org.jsoup.nodes.Element td2 = tds.first().nextElementSibling().nextElementSibling();

            org.jsoup.nodes.Element td3 = tds.first().nextElementSibling().nextElementSibling().nextElementSibling();

            org.jsoup.nodes.Element td4 = tds.first().nextElementSibling().nextElementSibling().nextElementSibling().nextElementSibling();

           String x = td1.ownText();

           System.out.println(x);

           //Here I want to all the prices from String x in one Array               

        }


    } catch (Exception e) {

    }

Как я могу получить все цены из строки x в одном массиве ??

Ответы [ 2 ]

0 голосов
/ 12 января 2019

Заменить

org.jsoup.nodes.Element td = tds.first().siblingElements().first();

org.jsoup.nodes.Element td1 = tds.first().nextElementSibling();

org.jsoup.nodes.Element td2 = tds.first().nextElementSibling().nextElementSibling();

org.jsoup.nodes.Element td3 = tds.first().nextElementSibling().nextElementSibling().nextElementSibling();

org.jsoup.nodes.Element td4 = tds.first().nextElementSibling().nextElementSibling().nextElementSibling().nextElementSibling();

String x = td1.ownText();

System.out.println(x);

с

// create a list of Strings to store texts
List<String> list = new ArrayList<String>();

// to avoid calling first() many times assign the result to a variable
Element td = tds.first();

// instead of chaining next...next...next... you can iterate over all the siblings using iterator() and while loop
Iterator<Element> iter = td.siblingElements().iterator();
while (iter.hasNext()) {
    // every sibling is assigned to a new variable
    Element sibling = iter.next();
    // sibling text is added to list
    list.add(sibling.ownText());
}

// display whole list
System.out.println(list);

// and if you really need an array you can transform it
String[] arrayWithTexts = list.toArray(new String[list.size()]);

вам не хватает некоторых импортов, но ваша IDE поможет вам в этом и порекомендует исправления.

0 голосов
/ 12 января 2019

вместо простой печати строк с помощью System.out.println(x); вы можете добавить их в список с помощью

// declare a list first
List<String> list = new ArrayList<>();
...
list.add(x);
...