Jsoup使用选择器语法查找DOM元素
我们前面通过标签名,Id,Class样式等来搜索DOM,这些是不能满足实际开发需求的,
很多时候我们需要寻找有规律的DOM集合,很多个有规律的标签层次;
这时候,选择器就用上了 css jquery都有,Jsoup支持css,jquery类似的选择器语法;
这里给下实例:
package com.open1111.jsoup; import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class Demo03 { public static void main(String[] args) throws Exception{ CloseableHttpClient httpclient = HttpClients.createDefault(); // 创建httpclient实例 HttpGet httpget = new HttpGet("http://www.cnblogs.com/"); // 创建httpget实例 CloseableHttpResponse response = httpclient.execute(httpget); // 执行get请求 HttpEntity entity=response.getEntity(); // 获取返回实体 String content=EntityUtils.toString(entity, "utf-8"); response.close(); // 关闭流和释放系统资源 Document doc=Jsoup.parse(content); // 解析网页 得到文档对象 Elements linkElements=doc.select(".post_item .post_item_body h3 a"); // 查找所有帖子DOM for(Element e:linkElements){ System.out.println("博客标题:"+e.text()); System.out.println("-------------"); } Elements hrefElements=doc.select("a[href]"); // 带有href属性的a元素 for(Element e:hrefElements){ System.out.println(e.toString()); System.out.println("-------------"); } Elements imgElements=doc.select("img[src$=.png]"); // 查找扩展名为.png的图片DOM节点 for(Element e:imgElements){ System.out.println(e.toString()); System.out.println("-------------"); } Element element=doc.getElementsByTag("title").first(); // 获取tag是title的所有DOM元素 String title=element.text(); // 返回元素的文本 System.out.println("网页标题是:"+title); } }
上一篇:java 301重定向实现
下一篇:学完VIP跳槽涨1000