我正在尝试连接到网站并提取一些特定信息。我使用的是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);
}
}
感谢。
答案 0 :(得分:0)
在项目目录中创建一个新目录“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");
}