Jsoup处理Url与解析Html

  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();
    }
}

你可能感兴趣的:(Jsoup)