JSoup 从网站获取 HTML table 数据
JSoup get HTML table data from website
我想从 HTML table 中获取数据,如下所示:
<tr>
<td rowspan="30" class="listWeekday">Mo</td>
<td class="listStart">05:00</td>
<td class="listEnd">08:30</td>
</tr>
<tr>
<td... unknown value of Start and End td's> </td></tr>
<tr>
<td rowspan="30" class="listWeekday">Tu</td>
<td.. same as Monday, continues so till Friday></td></tr>
我喜欢用 Jsoup 解析这个 table。我尝试在
中将 select() 方法与 "td.listWeekday" 运行 一起使用
for (Element elem : values) {
S.o.P(elem.text()); }
工作正常,但是当我尝试获取 listStart 值时,它会收集所有日期的数据,但我喜欢将它们分开,所以我每天都获取 listStart 和 listEnd 值。
我认为这是可能的,但我什至不知道从哪里开始,因为 listStart 和 listEnd 的数量每天都在变化。
在 JSoup 或我知道的任何其他 HTML 库中,分析具有行跨度条目的表并不简单。在您的情况下,您可以做的是在循环遍历所有行的同时在当天保留一个简单的变量。像这样:
String URL = "http://pastebin.com/raw/Sa2MRCTQ";
Document doc = Jsoup.connect(URL).get();
Elements trs = doc.select("tr:has(td.liste-startzeit)");
String currentDay = null;
for (Element tr : trs){
Element tdDay = tr.select("td.liste-wochentag").first();
if (tdDay!=null){
currentDay = tdDay.text();
}
Element tdStart = tr.select("td.liste-startzeit").first();
System.out.println(currentDay +" : "+tdStart.text());
}
我想从 HTML table 中获取数据,如下所示:
<tr>
<td rowspan="30" class="listWeekday">Mo</td>
<td class="listStart">05:00</td>
<td class="listEnd">08:30</td>
</tr>
<tr>
<td... unknown value of Start and End td's> </td></tr>
<tr>
<td rowspan="30" class="listWeekday">Tu</td>
<td.. same as Monday, continues so till Friday></td></tr>
我喜欢用 Jsoup 解析这个 table。我尝试在
中将 select() 方法与 "td.listWeekday" 运行 一起使用for (Element elem : values) {
S.o.P(elem.text()); }
工作正常,但是当我尝试获取 listStart 值时,它会收集所有日期的数据,但我喜欢将它们分开,所以我每天都获取 listStart 和 listEnd 值。
我认为这是可能的,但我什至不知道从哪里开始,因为 listStart 和 listEnd 的数量每天都在变化。
在 JSoup 或我知道的任何其他 HTML 库中,分析具有行跨度条目的表并不简单。在您的情况下,您可以做的是在循环遍历所有行的同时在当天保留一个简单的变量。像这样:
String URL = "http://pastebin.com/raw/Sa2MRCTQ";
Document doc = Jsoup.connect(URL).get();
Elements trs = doc.select("tr:has(td.liste-startzeit)");
String currentDay = null;
for (Element tr : trs){
Element tdDay = tr.select("td.liste-wochentag").first();
if (tdDay!=null){
currentDay = tdDay.text();
}
Element tdStart = tr.select("td.liste-startzeit").first();
System.out.println(currentDay +" : "+tdStart.text());
}