zoukankan      html  css  js  c++  java
  • Jsoup对html文档的解析

        最近实习在用jsoup写的一个html解析器解析网站,提取内容。发现这个框架很好用,这里简单总结下,基于IBM社区的文档,原文:https://www.ibm.com/developerworks/cn/java/j-lo-jsouphtml/index.html#N1005A

    Jsoup的好处在于直接解析某个URL,文本的信息,可以类似于DOM操作,直接提取某个标签,然后可以加一些限制条件,比如 is(), parent(),匹配某个attribute的值等等,可以根据节点名称或者是 HTML 元素的 id 来获取对应的元素或者元素列表。

    类层次图:

     jsoup可以直接对字符串,url,文本解析。

    字符串:Document doc = Jsoup.parse(html);

    URL: Document doc = Jsoup.connect("http://www.oschina.net/").get();  

    文本:File input = new File("D:/test.html");  Document doc = Jsoup.parse(input,"UTF-8","http://www.oschina.net/");第三个名为 baseURL 的参数的意思就是当 HTML 文档使用相对路径方式引用外部文件时,jsoup 会自动为这些 URL 加上一个前缀,也就是这个 baseURL。

    功能超强的选择器:Elements links = doc.select("a[href]");  // 选择具有href的属性

             Elements pngs = doc.select("img[src$=.png]");// 所有引用 png 图片的元素

            doc.select("div.comments a").attr("rel", "nofollow"); // 为所有链接增加 rel=nofollow 属性

            doc.select("div.comments a").addClass("mylinkclass"); // 为所有链接增加 class="mylinkclass" 属性

            doc.select("img").removeAttr("onclick"); // 删除所有图片的 onclick 属性

            doc.select("input[type=text]").val(""); // 清空所有文本输入框中的文本

    HTML 文档清理:jsoup 使用一个 Whitelist 类用来对 HTML 文档进行过滤脚本,提供几个常用方法:

               node()//只允许包含文本信息

              basic()://允许的标签包括:a, b, blockquote, br, cite, code, dd, dl, dt, em, i, li, ol, p, pre, q, small, strike, strong等属性

              simpleText()://只允许 b, em, i, strong, u 这些标签

    jsoup的选择器:tagname()//使用命名空间的标签定位 

            ns|tag:使用命名空间的标签定位,例如 fb:name 来查找 <fb:name> 元素

            #id:使用元素 id 定位,例如 #logo   

            .class:使用元素的 class 属性定位,例如 .head

    jsoup还支持组合语法。

  • 相关阅读:
    Linux kernel pwn (四): Bypass SMEP
    Linux kernel pwn(三):Double Fetch
    Linux kernel pwn (二):UAF
    vue安装
    html标签
    javascript简介
    html样式 CSS(Cascading Style Sheets)
    html标签
    scala基础——scala变量
    elasticsearch日常维护
  • 原文地址:https://www.cnblogs.com/team42/p/7248570.html
Copyright © 2011-2022 走看看