android使用Jsoup进行html数据解析简单实例浅析

时间:2022-10-31 09:19:33

最近根据项目的需要,必须要从web端获得html网页数据,然后进行对html解析。一般,我们浏览的导航页面,你可以通过查看源文件的形式看到你当前浏览网页的html网页代码。通过网页代码的分析,使用Jsoup进行解析。Jsoup解析时候,需要加入jar包。

Jsoup官网:http://jsoup.org/

在官网下载相关的jar包。也可以通过官网,了解Jsoup的使用。再结合一些实例就差不多了。下面给出我的一个简单实例。

本人想从hao123的电影网解析出热播电影,并显示热播电影的url地址。

 

[java] view plaincopy
  1. package com.xzh.jsonpdemo;  
  2.   
  3. import java.io.IOException;  
  4.   
  5. import org.jsoup.Jsoup;  
  6. import org.jsoup.nodes.Document;  
  7. import org.jsoup.nodes.Element;  
  8. import org.jsoup.select.Elements;  
  9.   
  10. import android.os.Bundle;  
  11. import android.os.Handler;  
  12. import android.os.Message;  
  13. import android.app.Activity;  
  14. import android.widget.TextView;  
  15.   
  16. public class MainActivity extends Activity {  
  17.   
  18.     private TextView srcTextView;  
  19.     private String content;  
  20.     private Handler mHandler = null;  
  21.     public static final String URL_MAIN = "http://video.hao123.com/dianying/";  
  22.   
  23.     @Override  
  24.     protected void onCreate(Bundle savedInstanceState) {  
  25.         super.onCreate(savedInstanceState);  
  26.         setContentView(R.layout.activity_main);  
  27.   
  28.         srcTextView = (TextView) findViewById(R.id.tvShow);  
  29.         mHandler = new Handler() {  
  30.             @Override  
  31.             public void handleMessage(Message msg) {  
  32.   
  33.                 srcTextView.setText(content);  
  34.             }  
  35.         };  
  36.         new Thread() {  
  37.   
  38.             public void run() {  
  39.                   
  40.                 try {  
  41.                     /** 
  42.                      * 使用Jsoup解析html 
  43.                      */  
  44.                     //连接主页,获取html,开始进行解析  
  45.                     Document doc = Jsoup.connect(URL_MAIN).get();  
  46.                     //获得一个以movie_show_shot(热播电影)为id节点   
  47.                     Element nodes = doc.getElementById("movie_show_hot");  
  48.                     //获得一个以<class="video"节点集合  
  49.                     Elements links = nodes.getElementsByClass("video");  
  50.                     StringBuffer stringBuffer = new StringBuffer();  
  51.                     int i = 0;  
  52.                     for (i = 0; i < links.size(); i++) {  
  53.                         //遍历集合获得第一个节点元素  
  54.                         Element et = links.get(i).select("a[href]").first();  
  55.                         //获取元素的href属性  
  56.                         stringBuffer.append(URL_MAIN + et.attr("href") + "\n");  
  57.                     }  
  58.                     content = stringBuffer.toString();  
  59.                     mHandler.sendEmptyMessage(0);  
  60.                 } catch (IOException e) {  
  61.   
  62.                     e.printStackTrace();  
  63.                 }  
  64.             };  
  65.         }.start();  
  66.   
  67.     }  
  68. }  
布局文件就是一个TextView显示内容
[html] view plaincopy
  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:paddingBottom="@dimen/activity_vertical_margin"  
  6.     android:paddingLeft="@dimen/activity_horizontal_margin"  
  7.     android:paddingRight="@dimen/activity_horizontal_margin"  
  8.     android:paddingTop="@dimen/activity_vertical_margin"  
  9.     android:id="@+id/rl_main"  
  10.     tools:context=".MainActivity" >  
  11.   
  12.     <TextView  
  13.         android:id="@+id/tvShow"  
  14.         android:layout_width="wrap_content"  
  15.         android:layout_height="wrap_content"  
  16.         android:text="@string/hello_world" />  
  17.   
  18. </RelativeLayout>  

有关于Jsoup类使用可以查看官网。