如何使用 JAVA 从 html 页面获取表格

Posted

技术标签:

【中文标题】如何使用 JAVA 从 html 页面获取表格【英文标题】:How to get a table from an html page using JAVA 【发布时间】:2012-06-02 00:40:20 【问题描述】:

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

我使用的网站使用登录名和密码来访问表格。 Tag 是 TBODY,但 html 中还有另外 2 个 TBODY。

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

【问题讨论】:

【参考方案1】:

如果这是我的项目,我会考虑使用 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

【讨论】:

如果我需要密码才能访问带有表格的 html 页面,那我该怎么做呢?无法在获取请求中发送密码。 悬停,如果您能接受我为 HTML 表格添加代码的编辑,我将不胜感激。如果网址失效,这将很有用。感谢这个出色的答案。谢谢你,我的朋友,我爱你。 @BoratSagdiyev:请格式化您的 HTML 代码以符合标准。 谢谢悬停。我不确定我是否理解。我应该让它适合而不需要横向滚动吗?

以上是关于如何使用 JAVA 从 html 页面获取表格的主要内容,如果未能解决你的问题,请参考以下文章

从 API 获取数据后,如何在 HTML 表格中显示 api 数据

bootstrap 如何从父页面的表格获取值后传递给模态框的input里面。

如何把页面内容导出为word? (Java)

如何使用 angularjs 或 jQuery 更改 HTML 表格中的文本颜色?

如何从存储在我的 PC 上的文件中获取 XML 数据并使用 javascript 填充 HTML 表格?

急!我用Java连接了数据库并读取了一个表中的数据,如何在jsp页面中以表格的形式输出查询的数据??谢谢