【发布时间】:2014-08-28 13:55:19
【问题描述】:
// 我有这个AsynchTask 获取网站博客的正文。但是,启动方法时它不显示任何内容。
protected Void doInBackground(Void... params) {
try {
Document document = Jsoup.connect(url).get();
Elements elements = document.select("div.pst-content safety clearfix entry-content p");
for(Element elements123 : elements){
title+=elements123.text();
System.out.println(elements123.text());
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
// Set title into TextView
TextView txttitle = (TextView) findViewById(R.id.titletxt);
txttitle.setText(title);
// System.out.println(title);
mProgressDialog.dismiss();
}
【问题讨论】:
-
并不是说它可以解决任何问题,但您不应该在循环中使用
title+=elements123.text()。相反,您应该将append新元素添加到StringBuilder。无论如何,您确定您的代码处理 URL 是正确的吗?您是否在简单的 Java 应用程序中测试了这个select查询(比如说在 main 方法中)? -
我尝试选择“a”并且它有效。也许它只是查询?
-
有可能。如果您的代码适用于一个查询而不适用于其他查询,则该另一个查询存在问题,或者您正在解析错误的数据。考虑打印
document以查看它是否真的包含div.pst-content和您需要的其他元素(此内容可能是由 JavaScript 动态生成的,在这种情况下,您将需要像 selenium 这样的 web-driver 而不是像 Jsoup 这样的简单解析器)。 -
我会尽力的。谢了哥们。我很感激!
标签: java javascript android jquery jsoup