如何使用jsoup提取直接有两个“td”标签的“tr”标签。
示例html
<table>
<tr> <!-- I don't want to extract this tr -->
<td>
<table>
<tr><td>extract</td><td>extract</td></tr> <!-- I want extact this tr -->
<tr><td>extract</td><td>extract</td></tr> <!-- I want extact this tr -->
</table>
</td>
</tr>
</table>
我尝试使用此查询提取。但我有3个tr标签。
doc.select("tr:has(td:eq(1))")
答案 0 :(得分:2)
您是否尝试过关注查询doc.select("tr tr")
?
此查询应选择您评论的所有表格行。
答案 1 :(得分:1)
//我希望这对你有帮助........你可以看到这样的输出:a b c d / n e f g h存储在内表的td标签中。
String input = "<table><tr><td >TD1</td><td>td1</td> <td ><table><tr><td >a</td><td>b</td> <td >c</td><td>d</td></tr><tr><td>e</td><td>f</td><td >g</td><td>h</td></tr></table></td><td>td1</td></tr><tr><td>TD2</td><td>tD2</td><td >Td2</td><td>td2</td></tr></table>";
Document doc = Jsoup.parse(input);
Elements tables = doc.select("table tr td:has(table)");
for (Element table : tables) {
Elements trs = table.select("tr");
String[][] trtd = new String[trs.size()][];
for (int a = 0; a < trs.size(); a++) {
Elements tds = trs.get(a).select("td");
trtd[a] = new String[tds.size()];
for (int b = 0; b < tds.size(); b++) {
trtd[a][b] = tds.get(b).text();
System.out.print( trtd[a][b] +" ");
}
System.out.println( );
}
// trtd now contains the desired array for this table
}
}
}