2013-08-25 63 views
0

我是android開發新手。我正在使用Jsoup解析URL以獲取文件位置。在Android應用程序中解析HTML和Jsoup問題

下面是我解析URL的代碼,它適用於我插入的大部分URL。 例如,www.baidu.com/www.nba.com/,標題記錄與頁面源中顯示的完全相同。

但是,對於http://music.baidu.com/,Eclipse日誌中顯示的標題與頁面資源不同。

Eclipse中顯示:百度音樂

頁面資源顯示:<title>百度音樂-中國第一音樂門戶</title>

(這是最重要的一個我想解決的問題。)

對於http://music.baidu.com/search?key=%E5%86%8D%E8%A7%81%E7%8E%8B%E5%AD%90+%E6%A3%89%E8%8A%B1%E7%B3%96

Eclipse中再次顯示百度音樂

頁面資源顯示<title>搜索含有"再見王子 棉花糖"的音樂_百度音樂-中國第一音樂門戶</title>

此外,對於這2個網頁,元素鏈接中沒有內容,因此Log.d("text", link.text());從不返回任何內容。

我注意到2個網頁源代碼在HTML中沒有像其他HTML代碼那樣有<meta http-equiv="content-type" content="text/html;charset=utf-8">

package com.example.htmlparser; 

import java.io.IOException; 

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

import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 

public class MainActivity extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     //set layout view 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Thread downloadThread = new Thread() {      
      public void run() {    
       Document doc;          
       try {               
        String url = ""; 
        doc = Jsoup.connect(url).get(); 
        //doc = Jsoup.parse(new URL(url).openStream(), "UTF-8", url); 
        String title = doc.title(); 
        Log.d("title", title); 

        Elements links = doc.select("a[href]"); 
        for (Element link : links) { 
         //Log.d("link", link.attr("href").toString()); 
         Log.d("text", link.text()); 
        }     
       } catch (IOException e) {       
        Log.d("exception", e.toString()); 
       } 
      } 
     }; 
     downloadThread.start();  
    } 
} 

有人可以幫我解決這個問題嗎?

回答

0

當我運行你的代碼時,Eclipse爲我顯示了正確的標題。但是,爲了確保越來越烏爾標題你可以試試這個:

String title = doc.select("head title").text(); 
     System.out.println("title: "+ title); 

我希望它能幫助