2016-02-28 83 views
2

我想从一个HTML表看起来像这样得到的数据HTML表中的数据:JSoup得到网站

<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。我试图用select()方法“td.listWeekday”在

运行
for (Element elem : values) { 
    S.o.P(elem.text()); } 

工作正常,但是当我试图让listStart值从所有天收集的数据,但我喜欢它们分开,所以我得到了每天的listStart和listEnd值。

我认为这是可能的,但我什至不知道从哪里开始,因为listStart和listEnd的数量每天都在变化。

+0

你将不得不开发代码来做到这一点。由于(对你而言)JSoup不支持你,它只是一个搜索库。任何更高级的行为都取决于开发者 –

+0

啊好吧,我希望Jsoup可以做到这一点。我想我会找出别的东西。谢谢 – koin

+1

你可以在帖子中填写HTML代码吗?我认为Jsoup有一个解决方案。 – Stephan

回答

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()); 
} 
+0

thx @luksch这对我很有用! – koin