jsoup初探

来源:互联网 发布:算法平台 编辑:程序博客网 时间:2024/05/18 00:55

jsoup是一个用于操作html的java第三方库,它提供非常方便的api,使用类似Dom,Css,Jquery的方法,用于抽取和操作数据。jsoup实现WHATWG HTML5规范,并像现代浏览器一样解析HTML DOM。以下是jsoup的一些特点:

  • 从url,file或者string中爬取和解析Html
  • 使用dom遍历和css选择器,抓取数据
  • 操作html的元素,属性和文本
  • 使用安全的白名单清理用户提交的内容,以防止xss(跨站脚本攻击)
  • 输出干净整洁的html

下面首先在idea中使用maven创建java项目,然后添加项目依赖的jar包,
打开项目设置,点击Libraries->右侧加号->From Maven,
这里写图片描述

示例代码:

try {            Document doc = Jsoup.connect("http://en.wikipedia.org/").get();            Elements newsHeadlines = doc.select("#mp-itn b a");            System.out.println(newsHeadlines.get(0).html());            Element element = doc.getElementById("articlecount"); //类似javascript的方法            System.out.println(element.html());            String unsafe = "<p><a href='http://example.com/' onclick='stealCookies()'>Link</a></p>";            Whitelist wl = Whitelist.basic();            String safe = Jsoup.clean(unsafe, wl);            // now: <p><a href="http://example.com/" rel="nofollow">Link</a></p>            System.out.println(safe);            wl.addAttributes("a", "href", "onclick");            String safe1 = Jsoup.clean(unsafe, wl);            System.out.println(safe1);            String url = "http://www.news.cn/politics/";            Document document = Jsoup.parse(new URL(url), 20000);            Elements elements = document.select("a[href^=http://news.xinhuanet.com/politics]");//选择href值以此开始的所有a标签            for (int i = 0; i < elements.size(); i ++)            {                String usafe = elements.get(i).outerHtml();                String safestr = Jsoup.clean(usafe, Whitelist.basic());//过滤标签里嵌有img标签的项                int index = (safestr.indexOf("</a>"));                if(!">".equals(safestr.subSequence(index-1, index)))                {                    System.out.println(Jsoup.clean(safestr, Whitelist.basic()));                }            }        }catch (Exception ex)        {            ex.printStackTrace();        }

输出结果如下:
这里写图片描述
由于jsoup 良好的可扩展性API 设计,你可以通过选择器的定义来开发出非常强大的HTML 解析功能。再加上jsoup 项目本身的开发也非常活跃,因此如果你正在使用Java ,需要对HTML 进行处理,不妨试试。

0 0
原创粉丝点击