在Android应用程序中解析带有Jsoup问题的HTML

时间:2013-08-25 01:52:33

标签: android html eclipse http jsoup

我是Android开发的新手。我正在使用Jsoup来解析URL以获取文件位置。

下面是我解析URL的代码,它适用于我插入的大部分URL。 例如,www.baidu.com/www.nba.com/,标题Logged与页面源中显示的完全相同。

但是,对于http://music.baidu.com/,Eclipse Log中显示的标题与页面资源不同。

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>

此外,对于这两个网页,元素链接中没有任何内容,因此Log.d("text", link.text());永远不会返回任何内容。

我注意到2个网页来源在HTML中没有<meta http-equiv="content-type" content="text/html;charset=utf-8">,就像其他HTML一样。

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

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

1 个答案:

答案 0 :(得分:0)

Eclipse运行代码后,Eclipse显示了正确的标题。但要确保获得你的头衔,你可以试试这个:

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

我希望它有所帮助