Java 用JSOUP解析HTML文档,can';不选择表节点?

Java 用JSOUP解析HTML文档,can';不选择表节点?,java,html,web-scraping,html-table,jsoup,Java,Html,Web Scraping,Html Table,Jsoup,我已经研究了几个具有类似问题的堆栈溢出主题 我有以下问题:我有一个简单的html页面,在本地下载并保存为.html文件,我正在使用JSoup对其进行解析以读取该表的内容。不幸的是,当我用.select(“table”)查找我的表时,它没有返回任何元素。因此我调试了它,我能注意到的是。。。我的body节点有一个childnode,它看起来只是字符串,因此我假设找不到任何表节点 有人能帮我吗 以下是我的代码片段: for (Element table : doc.select("table.c

我已经研究了几个具有类似问题的堆栈溢出主题

我有以下问题:我有一个简单的html页面,在本地下载并保存为.html文件,我正在使用JSoup对其进行解析以读取该表的内容。不幸的是,当我用.select(“table”)查找我的表时,它没有返回任何元素。因此我调试了它,我能注意到的是。。。我的body节点有一个childnode,它看起来只是字符串,因此我假设找不到任何表节点

有人能帮我吗

以下是我的代码片段:

   for (Element table : doc.select("table.creditsuisse")) {
        for (Element row : table.select("tr")) {
            for (Element tds : row.select("td")){
                for(Element link : row.select("href")){
                    System.out.println(link.text());
                }
                System.out.println(tds.text());
            }
        }
    }
下面是我的输入文件的外观:

<html>
<head>
</head>
<body>
<table class="creditsuisse" width="100%" cellspacing="0" cellpadding="0">
      <tbody>
    <tr>
        <th>Name</th>
        <th style="width:170px;">Funktion</th>
        <th style="width:180px;">
        Amtsdauer (Seit)        </th>
        <th style="width:130px;">Alter (Geburtsdatum)</th>
        <th style="width:45px;">Neuigkeit</th>
      </tr>
            <tr>

          <td>
            <a onclick="document.location='/u/p/al_thani_jassim_hamad_j_j-9293792/credit_suisse_ag_CH-020.3.923.549-1.htm'" href="/u/p/al_thani_jassim_hamad_j_j-9293792/credit_suisse_ag_CH-020.3.923.549-1.htm">Al-Thani Jassim Hamad J.J.</a> *&nbsp;<br>

          </td>

          <td>
                          VR-Mitglied           
          </td>
                    <td><a onclick="document.location='http://www.moneyhouse.ch/u/pub/credit_suisse_ag_CH-020.3.923.549-1.htm#28.06.2010'" href="/u/pub/credit_suisse_ag_CH-020.3.923.549-1.htm#28.06.2010">2 Jahre (28.06.2010)</a></td>
                  <td>-</td>
          <td align="center"></td>
        </tr>
            <tr>

          <td>
            <a onclick="document.location='/u/p/albers_franz-4438178/credit_suisse_ag_CH-020.3.923.549-1.htm'" href="/u/p/albers_franz-4438178/credit_suisse_ag_CH-020.3.923.549-1.htm">Albers Franz</a> *&nbsp;<br>

          </td>

          <td>
                          VR-Mitglied           
          </td>
                    <td><a onclick="document.location='http://www.moneyhouse.ch/u/pub/credit_suisse_ag_CH-020.3.923.549-1.htm#04.05.1998'" href="/u/pub/credit_suisse_ag_CH-020.3.923.549-1.htm#04.05.1998">14 Jahre (04.05.1998)</a></td>
                  <td>-</td>
          <td align="center"></td>
        </tr>
     </tbody>
</table>
</body>
</html>

名称
功能
阿姆斯道尔(Seit)
Alter(Geburtsdatum)
纽基特
*
米格利德 - *
米格利德 -
您是如何阅读您的文档的? 如果它只是一个字符串,那么您需要首先将其转换为“文档” 您可以尝试以下方法:

Document document = Jsoup.parse(YOUR_STRING);
Elements elements = document.getElementsByTag("table");
Element table = elements[0];

要在
JSoup
中读取本地文件,您需要使用而不是采用HTML内容的文件。替换

Document doc = Jsoup.parse("C:\\...\\myFile.html", "UTF-8");


嘿,谢谢你的回复。我试过了,可惜也不行。。我认为问题在于它似乎是Body标记中的“TextNode”,而不是元素。。所以Body标记中的所有内容都是字符串。我实际上是这样做的,除非我理解错了,否则我就是这样解析我的html文件的:
Document doc=Jsoup.parse(“C:\\…\\myFile.html”,“UTF-8”)Document doc = Jsoup.parse(new File("C:\\...\\myFile.html"), "UTF-8");