最近根据项目的需要,必须要从web端获得html网页数据,然后进行对html解析。一般,我们浏览的导航页面,你可以通过查看源文件的形式看到你当前浏览网页的html网页代码。通过网页代码的分析,使用Jsoup进行解析。Jsoup解析时候,需要加入jar包。
Jsoup官网:http://jsoup.org/
在官网下载相关的jar包。也可以通过官网,了解Jsoup的使用。再结合一些实例就差不多了。下面给出我的一个简单实例。
本人想从hao123的电影网解析出热播电影,并显示热播电影的url地址。
- package com.xzh.jsonpdemo;
- 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.os.Bundle;
- import android.os.Handler;
- import android.os.Message;
- import android.app.Activity;
- import android.widget.TextView;
- public class MainActivity extends Activity {
- private TextView srcTextView;
- private String content;
- private Handler mHandler = null;
- public static final String URL_MAIN = "http://video.hao123.com/dianying/";
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- srcTextView = (TextView) findViewById(R.id.tvShow);
- mHandler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- srcTextView.setText(content);
- }
- };
- new Thread() {
- public void run() {
- try {
- /**
- * 使用Jsoup解析html
- */
- //连接主页,获取html,开始进行解析
- Document doc = Jsoup.connect(URL_MAIN).get();
- //获得一个以movie_show_shot(热播电影)为id节点
- Element nodes = doc.getElementById("movie_show_hot");
- //获得一个以<class="video"节点集合
- Elements links = nodes.getElementsByClass("video");
- StringBuffer stringBuffer = new StringBuffer();
- int i = 0;
- for (i = 0; i < links.size(); i++) {
- //遍历集合获得第一个节点元素
- Element et = links.get(i).select("a[href]").first();
- //获取元素的href属性
- stringBuffer.append(URL_MAIN + et.attr("href") + "\n");
- }
- content = stringBuffer.toString();
- mHandler.sendEmptyMessage(0);
- } catch (IOException e) {
- e.printStackTrace();
- }
- };
- }.start();
- }
- }
- <RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
- android:paddingLeft="@dimen/activity_horizontal_margin"
- android:paddingRight="@dimen/activity_horizontal_margin"
- android:paddingTop="@dimen/activity_vertical_margin"
- android:id="@+id/rl_main"
- tools:context=".MainActivity" >
- <TextView
- android:id="@+id/tvShow"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/hello_world" />
- </RelativeLayout>
有关于Jsoup类使用可以查看官网。