在Android应用程序中解析HTML和Jsoup问题

问题描述:

我是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();  
    } 
} 

有人可以帮我解决这个问题吗?

当我运行你的代码时,Eclipse为我显示了正确的标题。但是,为了确保越来越乌尔标题你可以试试这个:

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

我希望它能帮助