今天学习了一个java的html解析器(jsoup),以前一直使用htmlParser,感觉htmlParser处理html还可以,然而jsoup更强大,简单来说jsoup就是一个java版的jquery,个人认为很相似,方法名和选择器都很相像,比如jquery比较常用的方法:html()、text()、attr()等,如果熟悉jquery的话那学习jsoup就非常简单了,要是不熟悉jquery就多做些例子看看官方提供的教材和api也很快能学会的。
官方网站:
http://jsoup.org/
我的网站“导航189”在“热帖”板块抓取天涯的数据时候就是使用jsoup来解析html
http://www.dh189.com/
截图:
在附件中有:jsoup-1.2.3.jar jsoup-1.2.3-javadoc.jar jsoup-1.2.3-sources.jar 三个文件
开始使用jsoup:
import java.net.URL;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class JsoupTest {
public static void main(String[] args) throws Exception {
URL url = new URL("http://www.dh189.com/");
Document doc = Jsoup.parse(url, 3 * 1000);
//获取所有的链接
Elements test = doc.select("a");
for (Element element : test) {
//element.outerHtml() 和 element.toString()效果一样
System.out.println("链接源代码:" + element.outerHtml());
System.out.println("链接地址:" + element.attr("href") + " 链接文本:" + element.text());
}
}
}
jsoup选择器支持如下:
Pattern | Example |
* | * |
E | h1 |
ns E | fb name finds elements |
E#id | div#wrap, #logo |
E.class | div.left, .result |
E[attr] | a[href], [title] |
E[^attrPrefix] | [^data-], div[^data-] |
E[attr=val] | img[width=500], a[rel=nofollow] |
E[attr^=valPrefix] | a[href^=http:] |
E[attr$=valSuffix] | img[src$=.png] |
E[attr*=valContaining] | a[href*=/search/] |
E[attr~=regex] | img[src~=(?i)\\.(png\jpe?g)] div.header[title] |
E F | div a, .logo h1 |
E > F | ol > li |
E + F | li + li, div.head + div |
E ~ F | h1 ~ p |
E, F, G | a[href], div, h3 |
E:lt(n) | td:lt(3) finds the first 2 cells of each row |
E:gt(n) | td:gt(1) finds cells after skipping the first two |
E:eq(n) | td:eq(0) finds the first cell of each row |
E:has(selector) | div:has(p) finds divs that contain p elements |
E:contains(text) | p:contains(jsoup) finds p elements containing the text "jsoup". |
E:matches(regex) | td:matches(\\d+) finds table cells containing digits. div:matches((?i)login) finds divs containing the text, case insensitively. |
官方提供的例子links:
package org.jsoup.examples;
import org.apache.commons.lang.Validate;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.Jsoup;
import org.jsoup.select.Elements;
import java.net.URL;
import java.io.IOException;
/**
* Example program to list links from a URL.
*/
public class ListLinks {
public static void main(String[] args) throws IOException {
Validate.isTrue(args.length == 1, "usage: supply url to fetch");
URL url = new URL(args[0]);
print("Fetching %s...", url.toExternalForm());
Document doc = Jsoup.parse(url, 3*1000);
Elements links = doc.select("a[href]");
Elements media = doc.select("[src]");
Elements imports = doc.select("link[href]");
print("\nMedia: (%d)", media.size());
for (Element src : media) {
if (src.tagName().equals("img"))
print(" * %s: <%s> %sx%s (%s)",
src.tagName(), src.attr("abs:src"), src.attr("width"), src.attr("height"),
trim(src.attr("alt"), 20));
else
print(" * %s: <%s>", src.tagName(), src.attr("abs:src"));
}
print("\nImports: (%d)", imports.size());
for (Element link : imports) {
print(" * %s <%s> (%s)", link.tagName(),link.attr("abs:href"), link.attr("rel"));
}
print("\nLinks: (%d)", links.size());
for (Element link : links) {
print(" * a: <%s> (%s)", link.attr("abs:href"), trim(link.text(), 35));
}
}
private static void print(String msg, Object... args) {
System.out.println(String.format(msg, args));
}
private static String trim(String s, int width) {
if (s.length() > width)
return s.substring(0, width-1) + ".";
else
return s;
}
}
其他的一些例子:
Element div = doc.select("div").first(); // <div></div>
div.text("five > four"); // <div>five > four</div>
div.prepend("First ");
div.append(" Last");
// now: <div>First five > four Last</div>
File input = new File("/tmp/input.html");
Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");
Elements links = doc.select("a[href]"); // a with href
Elements pngs = doc.select("img[src$=.png]"); // img with src ending .png
Element masthead = doc.select("div.masthead").first(); // div with class=masthead
Elements resultLinks = doc.select("h3.r > a"); // direct a after h3
- 大小: 28.9 KB
分享到:
相关推荐
基于java的开发源码-HTML解析器 jsoup.zip 基于java的开发源码-HTML解析器 jsoup.zip 基于java的开发源码-HTML解析器 jsoup.zip 基于java的开发源码-HTML解析器 jsoup.zip 基于java的开发源码-HTML解析器 jsoup.zip ...
它的最新版本是1.11.3,这个版本的Jsoup提供了.jar文件,包括`jsoup-1.11.3.jar`,这使得Java开发者可以方便地将其集成到他们的项目中,进行网页抓取和分析任务。`jsoup-1.11.3-javadoc.jar`包含了该版本的API文档,...
**jsoup:强大的Java HTML解析库** jsoup是一款在Java平台上广泛使用的开源库,它的主要功能是解析HTML文档,提供了一种易于使用且功能强大的API,使得开发者可以方便地提取和操作HTML数据。jsoup的设计目标是处理...
它使用了一个近似于浏览器的HTML解析器,可以理解网页的实际布局和元素关系。 2. **DOM操作**:如同JavaScript中的DOM操作,jsoup提供了类似的方法来查找、遍历和修改HTML元素。例如,你可以使用CSS选择器来选取...
JAVA源码HTML解析器jsoupJAVA源码HTML解析器jsoup
java资源HTML解析器 jsoupjava资源HTML解析器 jsoup提取方式是百度网盘分享地址
Jsoup 是一个 Java 的 HTML 解析器,主要用于从网页中提取数据。通过 Jsoup,我们可以方便地解析 HTML 源码,从而获取我们所需的数据。 使用 HttpUrlConnection 类发送 HTTP 请求,接着使用 Jsoup 对响应的 HTML ...
综上所述,jsoup是一个强大的HTML解析库,它简化了Java开发者处理HTML文档的工作,提供了丰富的API和CSS选择器支持。无论是在数据提取、网页解析还是安全防护方面,jsoup都是一个值得信赖的工具。通过使用`jsoup-...
**jsoup:Java的HTML解析库** jsoup是一款强大的Java库,专为处理HTML文档而设计。它允许开发者轻松地解析、提取和修改HTML内容,就像在Web浏览器中使用jQuery那样方便。jsoup的主要功能包括: 1. **HTML解析**:...
综上所述,基于Java的实例开发源码-HTML解析器 jsoup是一个强大的工具,用于抓取、解析和操作HTML内容。它简化了处理HTML的复杂性,让开发者可以专注于数据的提取和分析,而不是处理底层的网络请求和解析细节。通过...
jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。 jsoup 可以从包括字符串、URL 地址...
**jsoup Java HTML解析器详解** jsoup是一个用于处理实际世界HTML的Java库。它提供了非常方便的方法来提取和操作数据,使用DOM,CSS以及类似于jQuery的API。jsoup能够理解HTML的不完美之处,同时提供了强大的功能来...
jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方法来取出和操作数据。 jsoup的主要功能如下: 1. 从一个URL,文件或...
Jsoup HTML解析器For Java 在Java程序中使用JQuery操作DOM 模式识别的新技术 狂顶
- **HTML解析器**:jsoup能够解析HTML字符串,将其转换为一个DOM(文档对象模型)结构,类似于浏览器如何解析网页。这使得开发者可以像处理XML一样处理HTML,通过DOM节点进行查找、修改和提取数据。 - **CSS选择器*...
至于文件"libs",这通常指的是包含库文件的目录,其中"jsoup-1.11.2.jar"和"JsoupXpath-0.3.2"是Java的库文件,需要添加到项目的类路径(ClassPath)中才能在Java程序中使用。 总的来说,Jsoup和JsoupXpath为Java...
总结来说,JSoup-Annotations是JSoup库的一个补充,它通过注解的方式简化了HTML解析过程,使得Java开发者在处理HTML数据时更加高效和便捷。在进行Web爬虫开发时,结合JSoup和JSoup-Annotations可以大大提高代码质量...
jsoup:Java HTML 解析器 jsoup是一个用于处理现实世界 HTML 的 Java 库。它使用最好的 HTML5 DOM 方法和 CSS 选择器,提供了一个非常方便的 API,用于获取 URL 以及提取和操作数据。 jsoup实现了WHATWG HTML5规范...
jsoup是一个强大的Java库,专门设计用于处理HTML文档,尤其是在实际的网络环境下。这个库的核心功能是解析HTML,将其转化为一个可操作的DOM(文档对象模型)结构,允许开发者通过DOM方法和CSS选择器来便捷地提取和...
Jsoup虽然不是完整的DOM解析器,但其简单易用的API和高效的性能使其在许多情况下成为更好的选择。相比于标准的DOM解析器,Jsoup更注重实际的网页解析需求,它的错误容忍度更高,能够处理一些不规范的HTML代码。 ...