Java 使用JSOUP打印特定行
我想从给定表中的特定行中提取文本,例如:Java 使用JSOUP打印特定行,java,web-scraping,html-table,jsoup,row,Java,Web Scraping,Html Table,Jsoup,Row,我想从给定表中的特定行中提取文本,例如: <table> <th> head1 </th> <th> head2 </th> <tr> <td> cell1 </td> <td> cell2 </td> </tr> <tr> <td> cell3 </td> <td> cell4 </td
<table>
<th> head1 </th>
<th> head2 </th>
<tr> <td> cell1 </td> <td> cell2 </td> </tr>
<tr> <td> cell3 </td> <td> cell4 </td> </tr>
</table>
我尝试了以下代码,但它打印了我不喜欢的标题行:
Element table = doc.getElementsByTag("table").first();
Elements trs = table.getElementsByTag("tr");
for (Element tr : trs) {
for (Element td : tr.getAllElements()) {
System.out.println("TD: " + td.text());
....
试着这样做:
Elements tdsInSecondRow = doc.select("table tr:eq(1) > td");
for (Element td : tdsInSecondRow)
{
System.out.println("TD: " + td.text());
}
为了理解选择器,请允许我将其分为3个部分:
boolean isFirstIteration = true;
for (Element tr : trs) {
if (isFirstIteration) {
isFirstIteration = false;
continue;
}
else {
for (Element td : tr.getAllElements()) { ... }
}
}
如果使用计数器,则可以每隔第二行或第三行取一个。而不是计数器,可以使用
:n子元素(an+b)
选择器选择每个an+b
th元素。因此,“从第二行开始的每三行”是:第n个子(3n+1)
。
boolean isFirstIteration = true;
for (Element tr : trs) {
if (isFirstIteration) {
isFirstIteration = false;
continue;
}
else {
for (Element td : tr.getAllElements()) { ... }
}
}