6

我正在做一个项目,我试图从互联网上获取财务报表并在 JAVA 应用程序中使用它们来自动创建比率和图表。

我正在使用的网站使用登录名和密码来访问表格。
标签是 TBODY,但 html 中还有 2 个其他 TBODY。

如何使用 java 将我的表格打印到一个 txt 文件中,然后我可以在我的应用程序中使用?解决此问题的最佳方法是什么,我应该阅读什么?

4

1 回答 1

21

如果这是我的项目,我会考虑使用 HTML 解析器,比如jsoup(尽管其他可用)。jsoup 站点有一个教程,在玩了一段时间之后,您可能会发现它非常易于使用。

例如,对于这样的 HTML 表格:

在此处输入图像描述

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
于 2012-05-27T02:28:59.243 回答