我需要一些帮助用JSOUP解析这个html。我正在尝试从表中的每一列获取数据值。我一直在看JSoup文档,试图弄清楚我到底需要做什么,但还是不确定。看起来网站使用了CSS和内联格式的组合;其中大部分可以转换为CSS并减小页面大小。
这是html文件的一个小片段(实际上差不多有5 MB大小)。
<html>
<head>
</head>
<body>
<table>
<tr>
<td> </td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td>
<div id="plyrRankings" style="overflow: scroll; overflow-x: hidden;">
<table id="u868top" width="868" bgcolor="#C8C8C8" cellspacing="0" cellpadding="0" border="0">
<tr>
<td class="legend titlesmall" bgcolor="#000000" align="left" height="60">#</td>
</tr>
</table>
<table id="u868" width="868" bgcolor="#C8C8C8" cellspacing="0" cellpadding="0" border="0">
<caption style="display:none">
Live ATP Ranking
</caption>
<thead>
<tr class="legend" bgcolor="#000000">
<td colspan="14" height="4"></td>
</tr>
<tr>
<td colspan="14" height="1"></td>
</tr>
<tr class="tbhead">
<td><b>#</b></td>
<td><b>CH</b></td>
<td><b>Player Name</b></td>
<td><b>Age</b></td>
<td><b>Ctry</b></td>
<td class="title" align="left" colspan="1" height="30" width="50" onMouseOver="this.className='title2';this.style.cursor='Pointer';" onMouseOut="this.className='title';this.style.cursor='Default'" onclick="sortByPosition();underlineHeaderColumn(5);"><b>Pts</b></td>
<td class="title" align="center" colspan="2" height="30" width="30" onMouseOver="this.className='title2';this.style.cursor='Pointer';" onMouseOut="this.className='title';this.style.cursor='Default'" onclick="sortByColumn(3);underlineHeaderColumn(6);"><b>+/-</b></td>
<td class="title hdcol" align="center" colspan="1" height="30" width="320" onMouseOver="this.className='title2';this.style.cursor='Pointer';" onMouseOut="this.className='title';this.style.cursor='Default'" onclick="sortByColumn(4);underlineHeaderColumn(7);"><b>Current Tournament</b></td>
<td class="title hdcol" align="center" height="30" width="320"><b>Previous Tournaments</b></td>
<td class="title shcol" align="center" height="30" width="320"><b>Current Tournament</b></td>
<td><b>Next Pts</b></td>
<td><b>Max Pts</b></td>
</tr>
<tr class="tbhead">
<td height="1" width="400" colspan="3"></td>
<td height="1" align="right" width="120" colspan="11"></td>
</tr>
<tr>
<td></td>
</tr>
</thead>
<tbody>
<tr bgColor="white" class="ESP">
<td width=20 height=30> 1 </td>
<td width=20><b class="smalltxt"> </b><b class="chigh"> CH </b><b class="smalltxt"> </b></td>
<td>
<div class="spr esp"></div>
</td>
<td width=150>Rafael Nadal</td>
<td width=50>31<span style="font-size:66%">.6</span></td>
<td width=80>ESP<span style="font-size:66%">1</span></td>
<td width=50>9580</td>
<td align="center">-</td>
<td align="center"><b class="smallred">-1020</b></td>
<td class="hdcol" align="center" width=320>Australian Open R16<br> (R32
<a href="" onclick="playVideo('6i9o76bE4vM' );return false;"> <img width=20 src="/youtube-logo-play-icon.png" style="vertical-align:middle;margin-top:-2px";></a>)</td>
<td class="hdcol" align="center" width=320>-</td>
<td class="shcol" align="center" width=320>Australian Open R16<br> (R32
<a href="" onclick="playVideo('6i9o76bE4vM' );return false;"> <img width=20 src="/youtube-logo-play-icon.png" style="vertical-align:middle;margin-top:-2px";></a>)</td>
<td width=50>9760</td>
<td width=50>11400</td>
</tr>
<tr>
<td colspan=14 height=1></td>
</tr>
</tbody>
</table>
</div>
</td>
</tr>
</table>
</body>
</html>
public static class Parse {
public static ArrayList<Player> playerList(Document doc) {
ArrayList<Player> players = new ArrayList();
try {
Elements trs = doc.select("tbody tr");
for (Element tr : trs) {
Elements tds = tr.getElementsByTag("td");
Element td = tds.first();
System.out.println("Blog: " + td.text());
}
} catch (Exception e) {
e.printStackTrace();
}
return players;
}
}
更新:我已经更新了源代码,以更准确地显示html的结构。我假定tbody将位于表元素中是一个给定的条件。我想我错了,对不起。
由于缺少table element标记,所以我在解析您提供的代码段时遇到了一些困难,但添加后,我可以使用以下逻辑获得每列中的文本:
public static void main(String args[]) {
String html = "<html> <head></head> <body> <table>\n" +
"<tbody>\n" +
"<tr bgColor=\"white\" class=\"ESP\">\n" +
" <td width=20 height=30> 1 </td>\n" +
" <td width=20><b class=\"smalltxt\"> </b><b class=\"chigh\"> CH </b><b class=\"smalltxt\"> </b></td> <td><div class=\"spr esp\"></div></td> \n" +
" <td width=150>Rafael Nadal</td> \n" +
" <td width=50>31<span style=\"font-size:66%\">.6</span></td> \n" +
" <td width=80>ESP<span style=\"font-size:66%\">1</span></td> \n" +
" <td width=50>9580</td> <td align=\"center\">-</td> \n" +
" <td align=\"center\"><b class=\"smallred\">-1020</b></td> \n" +
" <td class=\"hdcol\" align=\"center\" width=320>Australian Open R16<br> (R32 <a href=\"\" onclick=\"playVideo('6i9o76bE4vM' );return false;\" > <img width=20 src=\"/youtube-logo-play-icon.png\" style=\"vertical-align:middle;margin-top:-2px\";></a>)</td> \n" +
" <td class=\"hdcol\" align=\"center\" width=320>-</td> <td class=\"shcol\" align=\"center\" width=320>Australian Open R16<br> (R32 <a href=\"\" onclick=\"playVideo('6i9o76bE4vM' );return false;\" > <img width=20 src=\"/youtube-logo-play-icon.png\" style=\"vertical-align:middle;margin-top:-2px\";></a>)</td> \n" +
" <td width=50>9760</td> <td width=50>11400</td> \n" +
"</tr>\n" +
"</tbody>\n" +
"</table>\n" +
"</body>\n" +
"</html>";
Document document = Jsoup.parse(html);
Elements data = document.select("body > table > tbody > tr > td");
for (Element value : data) {
System.out.println(value.text());
}
}
我试图在标签之间获得文本并保存到一些变量中,例如:在这里我想保存值,这是标签之间。我还需要其余的文本,这是在标签,标签值分配与和标签值应该只返回- 我写了下面的内容:下面返回的只是“'em”标记中的“return”。这里的基本上是,选择标记,然后进行迭代,不确定我的方法是否正确,任何其他方法都受到高度赞赏。
我想解析出这个Nasa页面上的描述,页面底部的文字 我该怎么做?
主要内容:Jsoup 使用DOM解析HTML 语法,Jsoup 使用DOM解析HTML 说明,Jsoup 使用DOM解析HTML 示例以下示例将展示在将 HTML 字符串解析为 Document 对象后如何使用类似 DOM 的方法。 Jsoup 使用DOM解析HTML 语法 document : 文档对象代表 HTML DOM。 Jsoup : 解析给定 HTML 字符串的主类。 html : HTML 字符串。 sampleDiv : 元素对象表示由 id“sampleDiv”标识的 html
我是C新手,需要解析字符串“var1=bob” 我在C语法方面遇到了一些问题,并且无法成功地循环输入并通过解析它来提取“bob”和“smith”。我一直在尝试使用strtok(),但没有成功。 如果有人能在这里帮助我,我将不胜感激。 非常感谢。
问题内容: 在页面中,我想选择一个变量的值。以下是页面的摘要。 我的目的是使用来从此页面读取变量的值。有可能吗?如果是,那怎么办? 问题答案: 由于jsoup不是javascript库,因此有两种方法可以解决此问题: A.使用JavaScript库 优点: 全面的Javascript支持 缺点: 附加的天秤/依赖项 B.使用Jsoup +手动解析 优点: 无需额外的库 足以完成简单的任务 缺点: