是的,使用JSoup是可能的。首先,选择表格。然后,选择
<tr>行标签。您可以从第二个索引开始,因为第一行仅包含列名。然后遍历
<th>标签并获取特定的索引。在您的情况下,索引7和5很重要(索引7:状态,索引5:主机名)。检查状态是否等于或等于
down,然后将主机名添加到列表中。就这样。
ArrayList<String> downServers = new ArrayList<>();Element table = doc.select("table").get(0); //select the first table.Elements rows = table.select("tr");for (int i = 1; i < rows.size(); i++) { //first row is the col names so skip it. Element row = rows.get(i); Elements cols = row.select("td"); if (cols.get(7).text().equals("down")) { downServers.add(cols.get(5).text()); }}更新: 找到单词后,
Titan您可以创建另一个循环并查看集群名称是否为空。
编辑: 我将
while循环更改为
do while循环。
ArrayList<String> downServers = new ArrayList<>(); Element table = doc.select("table").get(0); //select the first table. Elements rows = table.select("tr"); for (int i = 1; i < rows.size(); i++) { //first row is the col names so skip it. Element row = rows.get(i); Elements cols = row.select("td"); if (cols.get(3).text().equals("Titan")) { if (cols.get(7).text().equals("down")) downServers.add(cols.get(5).text()); do { if(i < rows.size() - 1) i++; row = rows.get(i); cols = row.select("td"); if (cols.get(7).text().equals("down") && cols.get(3).text().equals("")) { downServers.add(cols.get(5).text()); } if(i == rows.size() - 1) break; } while (cols.get(3).text().equals("")); i--; //if there is two Titan names consecutively. } }downServers ArrayList将包含停机服务器主机名列表。



