Jsoup解析html的基本用法

原创 2016年05月30日 20:32:28

          这周学习了Jsoup的基本用法,感觉Jsoup解析html文本和dom解析xml大同小异。学习过xml解析的朋友如果学习Jsoup上手很快。没学过的朋友也没关系,Jsoup很简单下面我们一起来学习:

    一、Jsoup的介绍:

    jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOMCSS 以及类似于 jQuery 的操作方法来取出和操作数据。(该文字介绍从Jsoup官网翻译而来) ,

    二、Jsoup的功能:

     解析Html文本,将要解析的Html转化为Document的Dom树,通过Document将其html的标签转化为Element元素。通过Element元素获得标签的属性和内容。

     三、Jsoup的使用步骤

       1、由于Jsoup是属于第三方架包,所以肯定要下载该架包这里给出该架包的url(https://jsoup.org/download),朋友们可以根据url下载架包

       2、导入架包,将架包导入到自己测试的项目中,如果用android studio的朋友可能在这一步要小心了,这里可能会出错。遇到问题别灰心,根据提示信息就可以查找出问题的原因。主要的原因是因为Jsoup架包的文件覆盖了android的v4或v7里的文件。这个问题的解决方法网上很多。这里就不详细介绍了。

      3、和其他使用架包一样,导入到项目中了就可以使用jsoup解析Html文本了,解析Html文本的那个要获得文本,该怎样获得呢,jsoup提供了好几种获得Html文本的方法。下面我们将一一介绍;

         3.1、 获得html字符并将其转换为Document对象(该对象与Dom解析xml的Document类似),我们后面讲根据解析的Document对象解析Html的标签,获得其标签的属性值和内容。 

/*
* 解析Html字符串
* */
public Document parseString(String htmlStr) {


    return Jsoup.parse(htmlStr);
}


/*
* 通过baseUrl将相对URL转换为绝对URL解析Html字符
* */
public Document parseString(String htmltr, String charsetName) {
    return Jsoup.parse(htmltr, charsetName);
}

/*
* 通过Parser解析Html字符串
* */
public Document parseString(String htmlStr, String baseUrl, Parser parser) {
    return Jsoup.parse(htmlStr, baseUrl, parser);
}

     

         3.2、 获得html文件并将其转换为Document对象

/*
* 通过文件解析Html文本
* */
public Document parseFile(File file, String charSet) throws IOException {
    return Jsoup.parse(file, charSet);

}

       3.3、根据URL获取网络Html文本并将其解析为Document对象

     

/*
* 通过get请求Url,通过Url解析Html文本
* */
public Document parseUrlByGet(String url) throws IOException {
    Document document = null;
    document = Jsoup.connect(url)//连接到网络
            .timeout(3000)//设置超时时间
            .get();//通过get方法请求
    return document;
}

/*
* 通过post请求Url,通过Url解析Html文本
* */
public Document parseUrlByPost(String url) throws IOException {

    Document document = Jsoup.connect(url)
            .timeout(3000)
            .post();
    return document;
}

     ps(以上是jsoup获得不同类型的Htm文本的几种方法,JsoupAPI还提供了其他的方法,读者可以自己去参考APIk了解其他的方法)

   4、获得Document就可以解析其标签,将其标签转化为Element元素,以下是几种将其标签转化为Element元素的方法

 /*
 * 通过解析的document文件获得html的标签之以标签名获得标签
 *
 * */
 public Elements getElementByTag(Document document, String tag) {

     //获得Htmltag为名的标签,例如“title”标签
     return document.getElementsByTag(tag);

 }


 /*
* 通过解析的document文件获得html的标签之以标签的id获得标签,精准获取
*
* */
 public Element getElementById(Document document, String id) {

     //获得Htmltagid的标签
     return document.getElementById(id);
 }



 /*
 * 通过选择器去解析html,获得满足选择器的标签
 * */
 public Elements getElementBySelect(Document document ,String selecttor){

     //返回获得满足选择器的Element,如slecttor = "div"
     return document.select(selecttor);
 }
 

   5、通过Element元素获得标签的属性和内容


Elements Elements = bodyElement.select("a");
Log.d("tag","titles = " + Elements.toString());

//遍历Elements,解析其标签
for (Element title:Elements) {
    //解析其标签下的属性
    org.jsoup.nodes.Attributes titleAttr = title.attributes();
    for (Attribute attr: titleAttr) {
      //获得属性名
        String key = attr.getKey();
        Log.d("tag","key = " + key);
       
        if ("href".equals(key)){
            //获得属性值
            String link = attr.getValue();
            Log.d("tag","url = " + link);
        }
    }
    //获得标签的文本内容
    Log.d("tag","title = " + title.text());

}


      通过以上的方法就可以解析Html文档获得想要的内容了,虽然 上面的步骤可以解决相当一本分问题,当时是这仅是学习Jsoup的入门知识,想要更多了解Jsoup的读者可以参考Jsoup的官方文档,看文档是学习的最好方法,这是我们程序猿必备的条件之一。这里我给大家找出Jsoup的官方文档(https://jsoup.org/)和中文文档(http://www.open-open.com/jsoup/parsing-a-document.htm)的URL。


























版权声明:本文为博主原创文章,未经博主允许不得转载。

jsoup:解析HTML用法小结

1.解析方式  (1)从字符串解析  ? 1 2 3 String html = "First parse"   ...
  • hong0220
  • hong0220
  • 2014年11月15日 00:28
  • 18251

Jsoup解析HTML页面数据(又扒到1万+的数据)

昨天想用Jsoup抓取一个页面中的歇后语,没想到竟然遇到了这么一个奇葩问题,解析多条相同的数据的时候只解析到1条数据 比如解析如下内容 坐轿里骂人 不识抬举 坐轿打瞌睡 不识抬举 我解析td标...
  • zml_2015
  • zml_2015
  • 2016年06月22日 08:43
  • 11000

Jsoup解析HTML实例及文档方法详解

这篇文章主要介绍了Jsoup如何解析一个HTML文档、从文件加载文档、从URL加载Document等方法,对Jsoup常用方法做了详细讲解,最近提供了一个示例供大家参考 使用DOM方法来遍历一个文档 ...

jsoup解析HTML用法小结

使用HttpClient+jsoup做采集器有一段时间了,发现jsoup很好用,而且还有很多方便的东西都没怎么用上。于是想根据官网上的cookbook来对jsoup的使用做个小结,或者是归纳。按功能分...

使用Jsoup简单解析HTML文件示例

jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。在Java...
  • Roy_70
  • Roy_70
  • 2017年05月17日 21:51
  • 1228

jsoup:解析HTML用法小结

1.解析方式  (1)从字符串解析  String html = "First parse Parse HTML into a doc."; Document doc = Jsoup.parse(ht...

java-jsoup解析html页面的内容

前面一篇文章讲述了 怎么用httpclient发送页面请求,下面要做的就是 爬取请求到的页面的 内容了。 jsoup可以帮助我们很好的解析页面内容。具体例子我们在上文的框架里做示范。 上文链接:htt...

Jsoup解析html某片段的问题

案例 问题分析 解决办法案例在使用jsoup解析html中的某部分片段时,有时候会遇到解析不出字段。下面以案例进行讲解。 北京 ...

jsoup 对 HTML进行解析和操作

jsoup 简介 Java 程序在解析 HTML 文档时,相信大家都接触过 htmlparser 这个开源项目,我曾经在 IBM DW 上发表过两篇关于 htmlparser 的文章,分别是:从...

jsoup解析html

jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方法来取出和操作数据 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Jsoup解析html的基本用法
举报原因:
原因补充:

(最多只允许输入30个字)