我想从HTML表格中获取数据,如下所示:
<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解析这个表。我尝试在
中运行“td.listWeekday”时使用select()方法for (Element elem : values) {
S.o.P(elem.text()); }
工作正常,但是当我尝试获取listStart值时,它会收集所有日期的数据,但我喜欢将它们分开,所以我得到每天的listStart和listEnd值。
我认为这是可能的,但我甚至不知道从哪里开始,因为listStart和listEnd的数量每天都在变化。
答案 0 :(得分:2)
在JSoup或我知道的任何其他HTML库中分析带有rowspan条目的表并不简单。在您的情况下,您可以做的是在所有行上循环时保留当前日期的简单变量。像这样:
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());
}