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