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
- JSOUP初探
- JSOUP初探
- JSOUP初探
- jsoup初探
- JSOUP初探
- jsoup
- jsoup
- jsoup
- jsoup
- jsoup
- jsoup
- jsoup
- jsoup
- Jsoup
- jsoup
- jsoup
- jsoup
- Jsoup
- 背景图延迟加载(lazyload)技术
- linux下配置ip地址四种方法(图文)
- lowdb 学习
- 【bzoj 2749】: [HAOI2012]外星人
- 删除oracle用户、表空间、及物理文件操作过程
- jsoup初探
- 【CSS】|
- 双系统修复Ubuntu 12.04 GRUB引导
- PostgreSQL 多行变一行
- C++多态的实现原理
- Android 4.4.2 动态添加JNI库方法记录 (二 app应用层)
- 百分制成绩
- CodeForces 4D. Mysterious Present
- ogg sde 空间索引问题