jsoup是一个用于操作html的java第三方库,它提供非常方便的api,使用类似Dom,Css,Jquery的方法,用于抽取和操作数据。jsoup实现WHATWG HTML5规范,并像现代浏览器一样解析HTML DOM。以下是jsoup的一些特点:
下面首先在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 进行处理,不妨试试。