简介
- jsoup是一款java的HTML解析器,可直接解析某个URL地址、HTML文本内容。
- 它提供了一套非常省力的API,可通过DOM,CSS及类似jQuery的操作方法来取出和操作数据。
功能
- 从一个url、文件后字符串中解析HTML。
- 使用DOM或css选择器来查找、取出数据。
- 可操作HTML元素、属性和文本。
用法
-
直接在字符串中输入HTML文档:
String html = "<html><head><title>开源中国社区</title></head><body><p>这里是jsoup 项目的相关文章</p></body></html>"; Document doc = Jsoup.parse(html);
-
从url解析HTML文档:
//请求某网址 Document doc =Jsoup.connect("网址/").get(); String title = doc.title(); Document doc =Jsoup.connect("网址/") .data("query", "Java") //请求参数 .userAgent("I’mjsoup") //设置User-Agent .cookie("auth", "token") //设置cookie .timeout(3000) //设置连接超时时间 .post(); //使用POST方法访问URL
-
从文件解析HTML文档:
File input = new File("D:/test.html"); Document doc = Jsoup.parse(input,"UTF-8","网址/");
-
其中,最后一个参数可以不指定,但最好加上。当文件中涉及链接、图片及引用的外部脚本时,当它们使用的是相对路径时,该参数会自动添加为这些url的前缀,如,开源软件 -> 开源软件。
-
提取HTML元素:
-
使用传统的DOM方式解析元素。
File input = new File("D:/test.html"); Document doc = Jsoup.parse(input, "UTF-8","网址/"); //根据节点名称或元素id解析 Element content =doc.getElementById("content"); Elements links = content.getElementsByTag("a"); for (Element link : links) { String linkHref =link.attr("href"); String linkText =link.text(); }
-
jsoup提供更简单的方法。
File input = new File("D:\test.html"); Document doc =Jsoup.parse(input,"UTF-8","网址"); Elements links = doc.select("a[href]"); // 具有href 属性的链接 Elements pngs = doc.select("img[src$=.png]");//所有引用png图片的元素 Element masthead =doc.select("div.masthead").first();// 找出定义了class=masthead 的元素 Elements resultLinks = doc.select("h3.r >a"); // direct a after h3