jsoup

来源:互联网 发布:unity3d 工业仿真 编辑:程序博客网 时间:2024/05/22 17:40

一    概述:

jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。


二   功能

1. 从一个URL,文件或字符串中解析HTML;
2. 使用DOM或CSS选择器来查找、取出数据;
3. 可操作HTML元素、属性、文本;

三   参考资料


jsoup官方文档
https://jsoup.org/cookbook/
中文文档
http://www.open-open.com/jsoup/


四    添加依赖

compile 'org.jsoup:jsoup:1.9.2'

五   请求参数一般在网络中,在清单文件添加权限

<uses-permission android:name="android.permission.INTERNET"/>


六   用log来验证数据是否正确,布局

<Button    android:text="解析资源"    android:onClick="dian"    android:layout_width="match_parent"    android:layout_height="wrap_content" />

七   代码实现


1,找到你所需要的网页,右键查看网页源码

(我找的网页):

http://home.meishichina.com/show-top-type-recipe.html

2,看下我们要查找的数据


3,这里需要注意,网络请求是耗时操作,需要放在子线程,不然会报一个NetworkOnMainThreadException的异常


public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    //使用Element.select(String selector)查找元素,    // 使用Node.attr(String key)方法取得一个属性的值    public void dian(View view) {        new Thread(){            public void run(){                try {                    //URL加载一个Document对象。                    Document doc = Jsoup.connect("http://home.meishichina.com/show-top-type-recipe.html").get();                    //“椒麻鸡和它对应的图片都在<div class="pic">                    Elements titleAndPic = doc.select("div.pic");                    Log.i("mytag", "title:" + titleAndPic.get(1).select("a").attr("title") + "pic:" + titleAndPic.get(1).select("a").select("img").attr("data-src"));                    //所需链接在<div class="detail">中的<a>标签里面                    Elements url = doc.select("div.detail").select("a");                    Log.i("mytag", "url:" + url.get(1).attr("href"));                    //原料在<p class="subcontent">                    Elements burden = doc.select("p.subcontent");                    //对于一个元素中的文本,可以使用Element.text()方法                    Log.i("mytag", "burden:" + burden.get(1).text());                }catch(Exception e) {                    Log.i("mytag", e.toString());                }            }        }.start();    }}


八   打印出来的log





更多内容请参考官方文档,谢谢查看。


原创粉丝点击