有没有办法在一个 Jsoup select 中获取多个元素?
Is there a way to get multiple elements deep in one Jsoup select?
我正在查看一个通用的外观 HTML table,其中包含一些我需要提取的值。
table 的示例如下:
<table width="100%" class="list">
<tbody>
<tr>
<td><font style="font-family:Verdana; color:black; font-size:8pt; "><label>Project Number</label></font></td>
<td><font style="font-family:Verdana; color:black; font-size:8pt; ">123456</font> </td>
</tr>
<tr height="22">
<td><font style="font-family:Verdana; color:black; font-size:8pt; "><label>Report Number</label></font></td>
<td><font style="font-family:Verdana; color:black; font-size:8pt; ">REP445566</font></td>
</tr>
</table>
我想要做的是从第二个 <td>
标签中提取值。我不想为 table 做一个元素,然后为 <tr>
标签做另一个,为 <td>
做另一个,然后为 <font>
做另一个。我很好奇是否有办法 select 类似于 "tr > td > font" 这样我就可以避免必须创建多个元素来深入了解字体的值。
我目前的情况是:
Elements listTables = doc.getElementsByClass("list");
// There is a table above the one I want to use
Element mainTable = listTables.get(1);
Elements trs = mainTable.select("tr");
for (Element tr : trs) {
Elements tds = tr.select("td");
Element label = tds.get(0);
if (tds.size() > 1) {
Element value = tds.get(1);
// This gets me the td, now I need the value of the font
}
}
当然,Jsoup很强大!试试这个
String tdPath = "table > tbody > tr > td:nth-child(2)";
Elements secondTd = doc.select(tdPath);
您需要使用 css 选择器查询:
Elements e = d.select("table.list > tbody > tr > td + td");
for(int i=0;i<e.size();i++)
System.out.println(e.get(i).text());
输出:
123456
REP445566
我正在查看一个通用的外观 HTML table,其中包含一些我需要提取的值。
table 的示例如下:
<table width="100%" class="list">
<tbody>
<tr>
<td><font style="font-family:Verdana; color:black; font-size:8pt; "><label>Project Number</label></font></td>
<td><font style="font-family:Verdana; color:black; font-size:8pt; ">123456</font> </td>
</tr>
<tr height="22">
<td><font style="font-family:Verdana; color:black; font-size:8pt; "><label>Report Number</label></font></td>
<td><font style="font-family:Verdana; color:black; font-size:8pt; ">REP445566</font></td>
</tr>
</table>
我想要做的是从第二个 <td>
标签中提取值。我不想为 table 做一个元素,然后为 <tr>
标签做另一个,为 <td>
做另一个,然后为 <font>
做另一个。我很好奇是否有办法 select 类似于 "tr > td > font" 这样我就可以避免必须创建多个元素来深入了解字体的值。
我目前的情况是:
Elements listTables = doc.getElementsByClass("list");
// There is a table above the one I want to use
Element mainTable = listTables.get(1);
Elements trs = mainTable.select("tr");
for (Element tr : trs) {
Elements tds = tr.select("td");
Element label = tds.get(0);
if (tds.size() > 1) {
Element value = tds.get(1);
// This gets me the td, now I need the value of the font
}
}
当然,Jsoup很强大!试试这个
String tdPath = "table > tbody > tr > td:nth-child(2)";
Elements secondTd = doc.select(tdPath);
您需要使用 css 选择器查询:
Elements e = d.select("table.list > tbody > tr > td + td");
for(int i=0;i<e.size();i++)
System.out.println(e.get(i).text());
输出:
123456
REP445566