jsoup解析html
jar包引用
下载jsoup-1.7.3.jar
maven引用
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.7.3</version>
</dependency>
使用简介
这里只是简单列举一些方法,更多的放在在使用的时候,ide的自动提示里都可以看到,根据名字理解就可以.
String htmlCode = "<input id=\"id\" name=\"name\">";
Document doc = Jsoup.parse(htmlCode);
// 可以根据元素的属性来查,比如类名,id,或者自定义的属性来查询元素
Elements e = doc.getElementByAttribute();
// 新增一个元素
Element element1 = new Element(Tag.valueOf("div"),"");
// 新建一个Tag
Tag tag = Tag.valueOf("input");
// 将element1添加到e的前面
e.before(element1);
// 将element2天假到e的后面
e.after(element1);
// 添加一个子节点
e.append(Node);
注意,对Document
的get方法获取的Elements
进行修改,那么即是在原Document
里修改.
应用场景
- 可以使用jsoup来清理网站上的恶意攻击js,使用Jsoup的clean.
- 可以使用Jsoup来爬取网站的信息.
应用实例
/**
*爬取某个网站的小说方法
**/
private static void getNovers(String url,String contentId,String nextLinkId) throws IOException{
String dirName = "/Users/admin/";
String text = "";
Document doc = Jsoup.connect(url).get();
Element e = doc.getElementById(contentId);
if(e==null){
}else{
Elements h2 = doc.getElementsByTag("h2"); //标题
File file = null;
if(h2!=null&&h2.get(0)!=null) {
file = new File(dirName+h2.get(0).text()+".txt");
}
text = e.text().replace(" ", "\r\n ");
FileOutputStream os = new FileOutputStream(file);
String title = h2.get(0).text()+"\r\n";
byte[] titlearr = title.getBytes();
os.write(titlearr, 0, titlearr.length);
os.flush();
byte[] str = text.getBytes();
os.write(str, 0, str.length);
os.flush();
os.close();
Element next = doc.getElementById(nextLinkId);
if(next!=null){
Elements links = next.children();
Element linkElement = links.get(links.size()-1);
String nextUrl = linkElement.attr("href");
getNovers(nextUrl,contentId,nextLinkId);
}
}
}