我正在尝试制作一个解析器来获取已出现的最新 SQL 版本(仅限构建版本)。 他收到一个错误,以及他不需要的其他文本。 我做错了什么?
Document doc = Jsoup.connect("https://buildnumbers.wordpress.com/sqlserver/").get();
Elements trs = doc.select("tr");
//remove header row
trs.remove(0);
for (Element tr : trs) {
Elements tds = tr.getElementsByTag("td");
Element td = tds.last();
System.out.println(td.text());
}
最佳答案
您需要使用String::substring删除每个文本末尾的 (...)
。此外,您还错过了程序中各处的 null
检查。
按如下方式进行:
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class Main {
public static void main(String[] args) throws IOException {
Document doc = Jsoup.connect("https://buildnumbers.wordpress.com/sqlserver/").get();
Elements trs = doc.select("tr");
// remove header row
trs.remove(0);
String text;
int i;
for (Element tr : trs) {
Elements tds = tr.getElementsByTag("td");
Element td;
if (tds != null) {
td = tds.last();
if (td != null) {
text = td.text();
if (text != null) {
i = text.indexOf("(");
if (i != -1) {
System.out.println(text.substring(0, i).trim());
}
}
}
}
}
}
}
输出:
15.0.4013.40
14.0.3281.6
13.0.5698.0
...
...
...
SSMS 16.4
SSMS 16.3
关于java - Jsoup - 从Java中的表中解析数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60566473/