JSoup从网站获取HTML表数据

时间:2016-02-28 23:24:54

标签: java html parsing html-table jsoup

我想从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的数量每天都在变化。

1 个答案:

答案 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());
}