Jsoup处理Url与解析Html

来源:互联网 发布:天狼50软件 编辑:程序博客网 时间:2024/05/14 18:37

  jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API。
友情提示
刚开始接触对jsoup了解也不是很多,更多的还是需要自己在使用与实践中体会jsoup的作用。

jsoup官网连接:http://jsoup.org/

根据官网的信息可知jsoup的主要功能有:
从一个URL,文件或字符串中解析HTML;
使用DOM或CSS选择器来查找、取出数据;
可操作HTML元素、属性、文本;
jsoup是安全的。

废话不多说,看下Jsoup处理url解析html实例。
这里写图片描述
这里将通过url得到的html的解析放在了TextView文本上面。

一、代码提要

Jsoup处理Url主要是下面几行代码。

    String url="http://blog.csdn.net/danfengw?viewmode=contents";         //之后调用doc.toString可获得解析的内容。   Document doc= Jsoup.connect(url).get();

二、示例代码

布局

<FrameLayout 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"    tools:context=".MainActivity">    <ScrollView        android:id="@+id/scrollview"        android:layout_width="match_parent"        android:layout_height="match_parent"       >        <LinearLayout            android:layout_width="match_parent"            android:layout_height="match_parent"            android:orientation="vertical">            <TextView                android:id="@+id/textview"                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:textSize="20sp"                />        </LinearLayout>    </ScrollView>    <com.melnykov.fab.FloatingActionButton        android:id="@+id/floatingactionbutton"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:orientation="vertical"        android:layout_gravity="bottom|right"        android:layout_margin="10dp"        >    </com.melnykov.fab.FloatingActionButton></FrameLayout>

MainActivity

主要功能:
1、实现Jsoup处理的url内容放置到html上面,注意网路请求需要重新开启一个线程。
2、实现FloatingActionButton的点击事件,回到顶部。

import android.animation.ObjectAnimator;import android.os.Handler;import android.os.Message;import android.support.v7.app.ActionBarActivity;import android.os.Bundle;import android.util.DisplayMetrics;import android.util.Log;import android.view.GestureDetector;import android.view.Menu;import android.view.MenuItem;import android.view.MotionEvent;import android.view.View;import android.view.WindowManager;import android.widget.ScrollView;import android.widget.TextView;import com.melnykov.fab.FloatingActionButton;import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import java.io.IOException;public class MainActivity extends ActionBarActivity {    private TextView mTextView;    private FloatingActionButton mFloatingActionBar;    private ScrollView mScrollview;    private Handler mHandler=new Handler(){        @Override        public void handleMessage(Message msg) {           String html=msg.obj.toString();            mTextView.setText(html);        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mTextView= (TextView) findViewById(R.id.textview);        mFloatingActionBar= (FloatingActionButton) findViewById(R.id.floatingactionbutton);        mScrollview= (ScrollView) findViewById(R.id.scrollview);        mFloatingActionBar.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                mScrollview.scrollTo(0, 0);            }        });        new Thread(){            @Override            public void run() {                String url="http://blog.csdn.net/danfengw?viewmode=contents";                try {                    Document doc= Jsoup.connect(url).get();                    Message msg=new Message();                    msg.what=1;                    msg.obj=doc.toString();                    mHandler.sendMessage(msg);                } catch (IOException e) {                    e.printStackTrace();                }            }        }.start();    }}
0 0