關於Android 的 Jsoup的學習

正巧做到這了 進行一下學習


最近有些朋友問在andoroid怎樣解析html文件,webview是一個非常好的選擇,如果只想解析出其中的部分數據,而且沒有服務器端代碼的情況下使用jsoup解析是一個非常好的選擇因爲其有強大的選擇器。例如解析如下


該網站的通過查看頁面原代碼如下:

.......
<table width="100%" border="0" cellpadding="5" cellspacing="0">
                      <td>
                        <h2>Online Staff Directory</h2>
                      </td>
                    </tr>
                    <tr>
                      <td colspan="2"><img src="http://www.tp.edu.sg/spacer.gif" width="1" height="5"></td>
                    </tr>
                    <tr>
                      <td>
<form action="findstf.asp?div=All&from=" method="post">
  Staff Search: <input type="text" size="21" maxlength="30" name="name"> <input
  type="submit" value="Submit">
</form>
<hr NOSHADE size="1" width="99%"><p>

    <P><a href="mdeptlist.asp?dept=BUS&from="><< Another Division</a></P>

<p align="center" class="H1"><font color="#990000">BUS Admin/General Office                                              </font></p>
<table border="0" cellpadding ="0" width="99%" cellspacing="0">
<tr>
          <th align="left" width="10%">Dept/Sch</p></th>
          <th align="left" width="5%">&nbsp;</p></th>
          <th align="left" width="42%">Name/Designation</p></th>
          <th align="left" width="8%">Telephone</p></th>
</tr>
<tr bgcolor=#ECECEC>
    <td width="10%"  valign="top" align="left">&nbsp;</td>
    <td width="5%"  valign="top" align="left">&nbsp;</td>
    <td width="42%" valign="top" align="left">
    
<a href="mailto:[email protected]">Heng Seng Huat, Edward                            </a>

    </td>
    <TD width="8%" valign="top" align="left">67805056</td>
    </TR>    
    <tr bgcolor=#ECECEC>
    <td width="10%"  valign="top" style="padding-left:8px;" align="left">BUS/A     </td>
    <td width="5%"  valign="top" align="left">&nbsp;</td>
    <td width="42%" valign="top" align="left">
Section Head</td>
    <TD width="8%" valign="top" align="left">&nbsp;</td>
    </TR>    
<tr bgcolor=#ECECEC>
    <td width="10%"  valign="top" align="left">&nbsp;</td>
    <td width="5%"  valign="top" align="left">&nbsp;</td>
    <td width="42%" valign="top" align="left">&nbsp;</td>
    <TD width="8%" valign="top" align="left">&nbsp;</td>
    </TR>    

.......

在android中只想獲取其中的名字和電話,那麼解析方法如下:


import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements

......

    Document doc = Jsoup.connect("http://www-app.tp.edu.sg/scripts/staffdir/Emplist.asp?step=1&div=BUS/AF&from=").get();
            Elements links = doc.select("a[href]");
            Elements tds = doc.select("td[width=8%]");

......

因爲名字是有超鏈接,故可以通過jsoup的選擇器a[hred]獲取所有的超鏈接內容,而後進行篩選即可獲取名字;電話也是如此因爲在源代碼中得知電話的td標籤width=8%這樣的屬性標識電話,可以通過選擇器進行獲取。

Jsoup提供了強大的選擇器,如



但是這樣做的話給客戶端太大的壓力,最好的方式還是在服務器端將數據渲染成xml或者json來做,這樣客戶端解析起來比較快捷,效率高。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章