(三)Jsoup 使用选择器语法查找 DOM 元素
第一节: Jsoup 使用选择器语法查找 DOM 元素
Jsoup使用选择器语法查找DOM元素
我们前面通过标签名,Id,Class样式等来搜索DOM,这些是不能满足实际开发需求的,
很多时候我们需要寻找有规律的DOM集合,很多个有规律的标签层次;
这时候,选择器就用上了 css jquery都有,Jsoup支持css,jquery类似的选择器语法;
这里给下实例:
1 package com.javaxk.jsoup; 2 3 import org.apache.http.HttpEntity; 4 import org.apache.http.client.methods.CloseableHttpResponse; 5 import org.apache.http.client.methods.HttpGet; 6 import org.apache.http.impl.client.CloseableHttpClient; 7 import org.apache.http.impl.client.HttpClients; 8 import org.apache.http.util.EntityUtils; 9 import org.jsoup.Jsoup; 10 import org.jsoup.nodes.Document; 11 import org.jsoup.nodes.Element; 12 import org.jsoup.select.Elements; 13 14 public class Demo3 { 15 16 public static void main(String[] args) throws Exception{ 17 CloseableHttpClient httpclient = HttpClients.createDefault(); // 创建httpclient实例 18 HttpGet httpget = new HttpGet("http://www.cnblogs.com/"); // 创建httpget实例 19 20 CloseableHttpResponse response = httpclient.execute(httpget); // 执行get请求 21 HttpEntity entity=response.getEntity(); // 获取返回实体 22 String content=EntityUtils.toString(entity, "utf-8"); 23 response.close(); // 关闭流和释放系统资源 24 25 Document doc=Jsoup.parse(content); // 解析网页 得到文档对象 26 27 Elements linkElements=doc.select(".post_item .post_item_body h3 a"); // 查找所有帖子DOM 28 for(Element e:linkElements){ 29 System.out.println("博客标题:"+e.text()); 30 System.out.println("-------------"); 31 } 32 33 Elements hrefElements=doc.select("a[href]"); // 带有href属性的a元素 34 for(Element e:hrefElements){ 35 System.out.println(e.toString()); 36 System.out.println("-------------"); 37 } 38 39 Elements imgElements=doc.select("img[src$=.png]"); // 查找扩展名为.png的图片DOM节点 40 for(Element e:imgElements){ 41 System.out.println(e.toString()); 42 System.out.println("-------------"); 43 } 44 45 Element element=doc.getElementsByTag("title").first(); // 获取tag是title的所有DOM元素 46 String title=element.text(); // 返回元素的文本 47 System.out.println("网页标题是:"+title); 48 } 49 }