Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android系統教程 >> Android開發教程 >> Android利用Jsoup解析html 開發網站客戶端小記

Android利用Jsoup解析html 開發網站客戶端小記

編輯:Android開發教程

這些天業余時間比較多,閒來無事,想起了以前看過開發任意網站客戶端的一 篇文章,就是利用jsoup解析網站網頁,通過標簽獲取想要的內容。好了廢話不多 說,用到的工具為 jsoup-1.7.2.jar包,具體jsoup的相關文檔,請去這邊看 http://jsoup.org/,這裡有全部Api可以查詢。

這裡解析的網站是一個食譜網站,首先解析的是大類欄目標簽。

如果你使用過jquery那麼 ,接下來的事情就小菜一碟了,我們按F12進入浏覽 器的開發者模式,去分析當前html頁面的結構,如下圖:

每個<li></li>標簽裡面的值就是我們需要的,接下來我們需要 異步去獲取網頁信息,首先創建一個連接,生成一個Document對象,取得標題所 在<ul>的id值,通過select過濾。

Elements divs = content.select("#siteNav");

然後通過Jsoup去解析上圖的標簽,通過循環取出標題欄還有子目錄的超鏈接 ,插入數據庫,超鏈接用作展開子目錄的網頁地址,像這種網站大的標題結構一 般是不會改變的,可以留作緩存,而不用每次進入總要加載解析。

//異步獲取信息
    class Loadhtml extends AsyncTask<String, String, String>
    {
        ProgressDialog bar;
        Document doc;
        @Override
        protected String doInBackground(String... params) {
            // TODO Auto-generated method stub
            try {
                 doc = Jsoup.connect(Constans.NetAddress).timeout(5000).post();
                 Document content = Jsoup.parse(doc.toString());
                 Elements divs = content.select("#siteNav");
                 Document divcontions = Jsoup.parse(divs.toString());
                 Elements element = divcontions.getElementsByTag("li");
                 Log.d("element", element.toString());
                 for(Element links : element)
                 {
                     String title = links.getElementsByTag("a").text();
     
                     String link   = links.select("a").attr("href").replace("/", "").trim();
                     String url  = Constans.NetAddress+link;
                     ContentValues values = new ContentValues();
                     values.put("Title", title);
                     values.put("Url", url);
                     usedatabase.insert("Cach", values);
                 }
                    
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return null;
        }
    
        @Override
        protected void onPostExecute(String result) {
            // TODO Auto-generated method stub
            super.onPostExecute(result);
//            Log.d("doc", doc.toString().trim());
            bar.dismiss();
            ListItemAdapter adapter = new ListItemAdapter(context, usedatabase.getlist());
            listmenu.setAdapter(adapter);
        }
    
        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            super.onPreExecute();
            
            bar = new ProgressDialog(context);
            bar.setMessage("正在加載數據····");
            bar.setIndeterminate(false);
            bar.setCancelable(false);
            bar.show();
        }
            
    }

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved