本站使用 jsoup 来解析 HTML。
jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于的操作方法来取出和操作数据。
jsoup的主要功能如下:
从一个URL,文件或字符串中解析HTML;
使用DOM或CSS选择器来查找、取出数据;
可操作HTML元素、属性、文本;
jsoup是基于MIT协议发布的,可放心使用于商业项目。
示例代码:
File input = new File("/tmp/input.html");
Document doc = Jsoup.parse(input, "UTF-8", "/");
Element content = doc.getElementById("content");
Elements links = content.getElementsByTag("a");
for (Element link : links) {
String linkHref = link.attr("href");
String linkText = link.text();
}
jsoup 使用 selector 方式查找 HTML 文档中的元素
[代码]java代码
01File input =newFile("/tmp/input.html");
02Document doc = Jsoup.parse(input,"UTF-8","/");
03
04Elements links = doc.select("a[href]");// 链接
05Elements pngs = doc.select("img[src$=.png]");
06// 所有 png 的图片
07
08Element masthead = doc.select("div.masthead").first();
09// div with class=masthead
10
11Elements resultLinks = doc.select("h3.r > a");// direct a after h3
[代码]java代码
01String html ="<p>An <a href="/"><b>example</b></a> link.</p>";
02Document doc = Jsoup.parse(html);
03Element link = doc.select("a").first();
04
05String text = doc.body().text();// "An example link"
06String linkHref = link.attr("href");// "/"
07String linkText = link.text();// "example""
08
09String linkOuterH = link.outerHtml();
10// "<a href="/"><b>example</b></a>"
11String linkInnerH = link.html();// "<b>example</b>"
ID 的元素
[代码]java代码
01String html ="<p>An <a href="/"><b>example</b></a> link.</p>";
02Document doc = Jsoup.parse(html);
03Element link = doc.select("#j_link").first();
// 或者 doc.getElementById("#j_link");
04
05String text = doc.body().text();// "An example link"
06String linkHref = link.attr("href");// "/"
07String linkText = link.text();// "example""
08
09String linkOuterH = link.outerHtml();
10// "<a href="/"><b>example</b></a>"
11String linkInnerH = link.html();// "<b>example</b>"