关闭

Jsoup解析html的基本用法

标签: JsoupHtml
268人阅读 评论(0) 收藏 举报
分类:

          这周学习了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。


























0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:7227次
    • 积分:488
    • 等级:
    • 排名:千里之外
    • 原创:43篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条