Java анализирует данные из HTML-таблицы с помощью jsoup - PullRequest
0 голосов
/ 09 января 2019

Я хочу получить данные из таблицы по ссылке.

ссылка:

https://www.nasdaq.com/symbol/aapl/financials?query=balance-sheet

Я попробовал свой код, но он не работает

public static void main(String[] args) {
    try {
        Document doc = Jsoup.connect("https://www.nasdaq.com/symbol/aapl/financials?query=balance-sheet").get();
        Elements trs = doc.select("td_genTable");



        for (Element tr : trs) {
            Elements tds = tr.getElementsByTag("td");
            Element td = tds.first();
            System.out.println(td.text());
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

Кто-нибудь может мне помочь? Чтобы заставить его работать

Я не получаю вывод таблицы. Ничего не происходит.

1 Ответ

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

После проверки вашего кода у меня возникла проблема Read time out. Глядя на Google, я нашел этот пост , где предлагают добавить пользовательский агент, чтобы исправить это, и это сработало для меня . Итак, вы можете попробовать это

public static void main(String[] args) {
    try {
        // add user agent
        Document doc = Jsoup.connect("https://www.nasdaq.com/symbol/aapl/financials?query=balance-sheet")
                .userAgent("Mozilla/5.0").get();
        Elements trs = doc.select("tr");
        for (Element tr : trs) {
            Elements tds = tr.select(".td_genTable");
            // avoid tr headers that produces NullPointerException
            if(tds.size() == 0) continue;
            // look for siblings (see the html structure of the web)
            Element td = tds.first().siblingElements().first();
            System.out.println(td.text());
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

Я добавил опцию User agent и исправил некоторые ошибки запроса . Это будет полезно для начала вашей работы;)

...