Jsoup,解析 html table
Jsoup, parse html table
这可能是个愚蠢的问题,但我真的想不通。我正在尝试解析页面的 html 输出:http://meteo.uwb.edu.pl/
所以基本上我需要从 table 中提取值,从左侧(蓝色文本)作为键(headers),从右侧(棕色文本)作为值。此外,header 个标签 ("Aktualna pogoda/Weather conditions: ")
我的意图是从html输出得到htmltable然后解析它的行,但是我想不通,因为html输出是相当复杂。我从它开始:
doc = Jsoup.connect("http://meteo.uwb.edu.pl/").get();
Elements tables = doc.select("table");
for (Element row : table.select("tr"))
{
Elements tds = row.select("td:not([rowspan])");
System.out.println(tds.get(0).text() + "->" + tds.get(1).text());
}
但是我的结果还是一团糟。您知道如何正确解析它吗?
来自第一个 table 的密钥数据可以通过以下代码检索:
doc.select("table").get(1).select("tbody").get(1).select("tr").get(1).select("td").get(0).select("b")
并以此为价值:
doc.select("table").get(1).select("tbody").get(1).select("tr").get(1).select("td").get(1).select("b")
第二个table
doc.select("table").get(2).select("tbody").get(0).select("tr").get(1).select("td").get(0).select("b")
和
doc.select("table").get(2).select("tbody").get(0).select("tr").get(1).select("td").get(1).select("b")
我是这样管理的:
doc = Jsoup.connect("http://meteo.uwb.edu.pl/").get();
Elements tables = doc.select("td");
Elements headers = tables.get(2).select("b");
Elements vals = tables.get(3).select("b");
Map all = new HashMap();
for (int i=0;i<headers.size() ; i++) all.put(headers.get(i).text(),vals.get(i).text());
好像还可以
这可能是个愚蠢的问题,但我真的想不通。我正在尝试解析页面的 html 输出:http://meteo.uwb.edu.pl/
所以基本上我需要从 table 中提取值,从左侧(蓝色文本)作为键(headers),从右侧(棕色文本)作为值。此外,header 个标签 ("Aktualna pogoda/Weather conditions: ")
我的意图是从html输出得到htmltable然后解析它的行,但是我想不通,因为html输出是相当复杂。我从它开始:
doc = Jsoup.connect("http://meteo.uwb.edu.pl/").get();
Elements tables = doc.select("table");
for (Element row : table.select("tr"))
{
Elements tds = row.select("td:not([rowspan])");
System.out.println(tds.get(0).text() + "->" + tds.get(1).text());
}
但是我的结果还是一团糟。您知道如何正确解析它吗?
来自第一个 table 的密钥数据可以通过以下代码检索:
doc.select("table").get(1).select("tbody").get(1).select("tr").get(1).select("td").get(0).select("b")
并以此为价值:
doc.select("table").get(1).select("tbody").get(1).select("tr").get(1).select("td").get(1).select("b")
第二个table
doc.select("table").get(2).select("tbody").get(0).select("tr").get(1).select("td").get(0).select("b")
和
doc.select("table").get(2).select("tbody").get(0).select("tr").get(1).select("td").get(1).select("b")
我是这样管理的:
doc = Jsoup.connect("http://meteo.uwb.edu.pl/").get();
Elements tables = doc.select("td");
Elements headers = tables.get(2).select("b");
Elements vals = tables.get(3).select("b");
Map all = new HashMap();
for (int i=0;i<headers.size() ; i++) all.put(headers.get(i).text(),vals.get(i).text());
好像还可以