在网上找到了Jsoup的中文开发教程:http://www.open-open.com/jsoup/
多说无益,还是找个实例吧。
以我校的软件协会为例,获取一篇软件协会的文章,地址为:http://10.10.9.100:2014/NewsDetailInfo.aspx?newsid=615a1431-7766-407e-af62-d372b6cbc54e
(外网地址为http://www.topcsa.org:2014/NewsDetailInfo.aspx?newsid=615a1431-7766-407e-af62-d372b6cbc54e)
首先,下载并导入jar包。
下载地址:http://jsoup.org/download
倒入包后如下图所示:
因为我们需要网络请求,所以添加网络权限:<uses-permission android:name="android.permission.INTERNET"></uses-permission>。
从浏览器上查看我们需要的内容:
布局文件如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<WebView
android:id="@+id/webView"
android:layout_width="fill_parent"
android:layout_height="200dp" />
<ScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
</ScrollView>
</LinearLayout>
下面贴上获取数据的代码:
package com.topcsa.zhj_jsoup;
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.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.webkit.WebView;
import android.widget.TextView;
public class MainActivity extends Activity {
private WebView webView;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = (WebView) findViewById(R.id.webView);
textView = (TextView) findViewById(R.id.textView);
try {
ProgressAsyncTask asyncTask = new ProgressAsyncTask(webView,
textView);
asyncTask.execute(10000);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
class ProgressAsyncTask extends AsyncTask<Integer, Integer, String> {
private WebView webView;
private TextView textView;
public ProgressAsyncTask(WebView webView, TextView textView) {
super();
this.webView = webView;
this.textView = textView;
}
@Override
protected String doInBackground(Integer... params) {
String str = null;
String content = "http://10.10.9.100:2014";
Document doc = null;
try {
// 获取文档
doc = Jsoup
.connect(
"http://10.10.9.100:2014/NewsDetailInfo.aspx?newsid=615a1431-7766-407e-af62-d372b6cbc54e")
.timeout(5000).get();
//获取<div id="right">对应的内容
Elements ListDiv = doc.getElementsByAttributeValue("id",
"right");
//查找图片
for (Element element : ListDiv) {
str = element.html();
Elements Listimg = ListDiv.select("img");
String strimg;
//打印出图片链接
for (Element e : Listimg) {
strimg = content + e.attr("src");
Log.d("Listimg.src", strimg);
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return str.replace("/UpFileimage",
"http://10.10.9.100:2014/UpFileimage");//将获取的相对路径转换成绝对路径
}
/**
* 这里的String参数对应AsyncTask中的第三个参数(也就是接收doInBackground的返回值)
* 在doInBackground方法执行结束之后在运行,并且运行在UI线程当中 可以对UI空间进行设置
*/
@Override
protected void onPostExecute(String result) {
webView.loadData(result, "text/html;charset=utf-8", null);
textView.setText(result);
}
}
}
运行结果如下: