【发布时间】:2016-03-25 15:55:58
【问题描述】:
有 HTML:
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td width="27%" align="left" valign="top">
<span class="param">Text0</span> 23<br />
<span class="param">Text1</span> 173<br />
<span class="param">Text2</span> 54<br />
<span class="param">Text3</span> 2<br /><br />
</td>
<td width="27%" align="left" valign="top">
<span class="param">Text4</span><br />
one <br />
two <br />
three <br />
</td>
<td width="46%" align="left" valign="top">
<span class="param">Text5</span><br />
one -<br />
two -<br />
three -<br />
</td>
</tr>
</table>
我可以获取值Text0-3解析代码更改get(0)-get(3),但无法获取Text4和Text5:
Document doc = Jsoup.connect("text.html").get();
Element param = doc.select("span[class=param]").get(0);
Node node = param.nextSibling();
System.out.println(node.toString());
如何获取Text4和Text5的值? get(4) 或 get(5),现在返回 br,但我需要得到“一、二、三”
现在我使用这个代码:
Document doc = Jsoup.connect("text.hml").get();
Elements params = doc.select("span[class=param]");
int i;
for (i=0; i<6; i++) {
Element param = params.get(i);
Node node = param.nextSibling();
System.out.println(node.toString());
}
这个印刷品:
23
173
54
2
<br>
<br>
我需要:
23
173
54
2
one two three
one two three
疯狂的代码答案:
Document doc = Jsoup.connect("text.html").get();
Elements params = doc.select("span[class=param]");
int i;
for (i=0; i<3; i++) {
Element param = params.get(i);
Node node = param.nextSibling();
System.out.println(node.toString());
}
for (i=4; i<5; i++){
Element apar = params.get(i);
Node apan = apar.nextSibling();
System.out.println("apar: "+apan.nextSibling().toString());
System.out.println("apar: "+apan.nextSibling().nextSibling().nextSibling().toString());
System.out.println("apar: "+apan.nextSibling().nextSibling().nextSibling().nextSibling().nextSibling().toString());
//System.out.println(apan.nextSibling().toString());
}
for (i=5; i<6; i++){
Element vih = params.get(i);
Node vihn = vih.nextSibling();
System.out.println("vih: "+vihn.nextSibling().toString());
System.out.println("vih: "+vihn.nextSibling().nextSibling().nextSibling().toString());
System.out.println("vih: "+vihn.nextSibling().nextSibling().nextSibling().nextSibling().nextSibling().toString());
//System.out.println(apan.nextSibling().toString());
}
}
这个疯狂的(?)代码打印出我想要的。
【问题讨论】:
-
你的
node.toString()打印什么? -
如果设置:get(0),则打印 23。如果设置 get(5),则打印
。但我需要“一二三” -
现在您已经更新了问题,它变得不那么有意义了。您最初希望在 元素中获取数据。但是现在您正在尝试获取与 span 元素无关的随机数据,而是
元素中的实际数据。也许你可以描述一下你想要完成的事情。
标签: java html parsing jsoup nextsibling