Вопрос по arrays, java – Как получить таблицу со страницы HTML, используя JAVA

6

Я работаю над проектом, в котором я пытаюсь получить финансовые отчеты из Интернета и использовать их в приложении JAVA для автоматического создания коэффициентов и диаграмм.

Сайт, который я использую, использует логин и пароль для доступа к таблицам.
Тег является TBODY, но в html есть еще 2 TBODY.

Как я могу использовать Java для печати моей таблицы в TXT-файл, который я затем могу использовать в своем приложении? Какой лучший способ пойти по этому поводу, и что я должен прочитать?

Ваш Ответ

1   ответ
21

я бы изучил использование анализатора HTML, что-то вродеjsoup (хотя другие доступны). На сайте jsoup есть учебное пособие, и, поиграв с ним некоторое время, вы, вероятно, найдете его довольно простым в использовании.

Например, для таблицы HTML вот так:

enter image description here

jsoup может разобрать это так:

import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class TableEg {
   public static void main(String[] args) {
      String html = "http://publib.boulder.ibm.com/infocenter/iadthelp/v7r1/topic/" +
            "com.ibm.etools.iseries.toolbox.doc/htmtblex.htm";
      try {
         Document doc = Jsoup.connect(html).get();
         Elements tableElements = doc.select("table");

         Elements tableHeaderEles = tableElements.select("thead tr th");
         System.out.println("headers");
         for (int i = 0; i < tableHeaderEles.size(); i++) {
            System.out.println(tableHeaderEles.get(i).text());
         }
         System.out.println();

         Elements tableRowElements = tableElements.select(":not(thead) tr");

         for (int i = 0; i < tableRowElements.size(); i++) {
            Element row = tableRowElements.get(i);
            System.out.println("row");
            Elements rowItems = row.select("td");
            for (int j = 0; j < rowItems.size(); j++) {
               System.out.println(rowItems.get(j).text());
            }
            System.out.println();
         }

      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}

В результате получается следующий вывод:

headers
ACCOUNT
NAME
BALANCE

row
0000001
Customer1
100.00

row
0000002
Customer2
200.00

row
0000003
Customer3
550.00
Если мне нужен пароль для доступа к html-странице с таблицей, то как мне это сделать? Пароль не может быть отправлен в запросе на получение.
@ BoratSagdiyev: пожалуйста, отформатируйте HTML-код, чтобы он соответствовал стандартам.
Спасибо, наведите Я не уверен, что понимаю. Должен ли я сделать так, чтобы боковая прокрутка не нужна?
Однако я действительно буду признателен, если вы примете мою правку, в которой добавлен код для таблицы HTML. Будет полезно в случае, если URL не работает. Спасибо за этот отличный ответ. Спасибо, мой друг, я люблю тебя.

Похожие вопросы