帮助Android中的Jsoup使用

时间:2011-07-13 01:21:26

标签: android jsoup

我正在尝试连接到网站并提取一些特定信息。我使用的是HTMLCleaner和xpath,但它似乎不支持我需要的所有xpath查询。

我正在尝试使用Jsoup,在阅读好评之后。但问题是每当我运行程序时它会强行关闭。以下是我的试用计划。请让我知道我哪里出错了。 (我在清单文件中设置了Internet权限。)

谢谢。

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;

public class jTrial extends Activity {
     /** Called when the activity is first created. */

    @Override
    public void onCreate(Bundle savedInstanceState) {
        String myString = null;     
        super.onCreate(savedInstanceState);
        setContentView(R.layout.search);
        try{
            Document doc = Jsoup.connect("http://google.com/").get();

            Elements divs = doc.select("div");

            for (Element div : divs) {
                myString=div.text();
            }
        }
        catch(IOException e){
            myString=e.getMessage();
        }
        TextView tv=new TextView(this);
        tv.setText(myString);
        //this.setContentView(tv);
    }
}

感谢。

2 个答案:

答案 0 :(得分:0)

您应该从http://jsoup.org/download

下载Jsoup jar文件

在项目目录中创建一个新目录“libs”,并将此jar文件复制到libs目录中。在res文件夹中创建“libs”会产生错误,因为res文件夹只允许由Android定义。然后右键单击该项目并打开Build path - >配置构建路径。 选择Libraries选项卡并添加jar。导航到项目libs目录并添加Jsoup jar文件。 再次重新导入所有包裹。

答案 1 :(得分:0)

当你尝试(因为你没有发布LogCat)

时,你可能会遇到异常
    for (Element div : divs) 
    {
       myString=myString+" " +div.text();  //if it was like you did, than you'll see only the last element or use div.getElementsByTag("div"); 
    }
    TextView tv=new TextView(this);
            tv.setText(myString);

如果要从html解析<divs,可能应该使用div.getElementsByTag("div"),因为您正在搜索HTML标记然后解析。 您得到TextView错误或myString为空(可能是NullPointerException)。

尝试重写那个部分(我希望你的search.xml中有TextView)

TextView tv=(TextView)findViewById(R.id.yourTextView);
if(myString!=null)  // if it is null you'll know that something with the Jsoup isnt right
{
       tv.setText(myString);
}else { 
tv.seText("myString is null");
}