jsoup学习
在学习xml解析的过程中,我们认识到了,相比于Java自带的sax/dom,身为第三方工具的jsoup更加方便、好用。那么,通过jsoup,我们可以干些什么呢?
1.获取文档
我们要先获取Document对象
获取Document对象常见的方法有三种,即字符串(String),文件(File),网页地址(URL)
String html1 = "<html><body><p>Hello HTML</p></body></html>";
Document doc1 = Jsoup.parse(html1);//通过String获取Document对象
File f = new File("a.html");
if(f.exists()) {
Document doc2 = Jsoup.parse(f,"utf-8");
}//通过文件方式获取Document对象
String url = "http://www.baidu.com";
Document doc3 = Jsoup.parse(new URL(url),5000); //超过5秒就报错
//通过URL获取Document对象
2.获取其中的元素
在基于我们获取上面的文档之后,我们可以通过Document对象来获取其中的元素
获取元素也有几种比较常见的手段
通过id获取
Element d = doc.getElementById("UserName");
System.out.println(e);
通过标签获取
Elements es;
es = doc.getElementsByTag("p");
show(es);
通过类名称获取
es = doc.getElementsByClass("RightBox");
show(es);
通过属性获取
es = doc.getElementsByAttribute("name");
show(es);
3.获取内容和文本
除了以上内容之外,我们还可以获取很多东西
File f = new File("c.html");
if(!f.exists())
return;
Document doc = Jsoup.parse(f,"utf-8");
Element e =doc.getElementById("d1");
获取属性
e.attr("id");
获取所有属性
e.attributes();
获取id
e.id();
获取类名称
e.className();
获取所有类名称
e.classNames();
获取文本
e.text();
获取html
e.outerHtml();
获取外html
e.outerHtml();
获取标签信息
e.tagName();
4.选择器语法
我们在选取元素时,也可以用到选择器语法来选择,这样会方便很多。
选择所有的超链 “a”
根据id进行选择 “#logocover”
根据class进行选择 “.clearfloat”
根据属性进行选择 “[href]”
有属性以tar开头 “[^tar]”
根据属性值选择 “[type=‘application/javascript’]”
属性值以什么开头 “[href^=‘http://www.oracle.com’]”
属性值以什么结尾 “[href$=‘index.html’]”
属性值包含什么 “[href*=‘download’]”
5.操作属性和内容
我们还可以通过jsoup来修改其中的内容
Element e = doc.select("p").first();
e.attr("class", "class1");
e.appendText(" Hello JSoup");
如上,为p元素增加了class为“class1”,并且将p元素的内容改为了“Hello JSoup”。