[java] jsoup使用简介-汇率换算器实现-插曲2
[java] jsoup使用简介-汇率换算器实现-插曲2
[java] jsoup使用简介-汇率换算器实现-插曲2
Table of Contents
- 1 系列文章地址
- 2 更多参考资料
- 3 解释遍历一个html文档和html字符串
- 3.1 运行环境设置及运行
- 3.2 直接输出Document
- 3.3 parse(String html, String baseUri)中baseUri具体指什么
- 4 解释一个body片断
- 5 从一个URL, 文件加载一个Document对象
- 6 其他更多文档中的内容请参见
- 7 其中常用的数据结构简介
- 7.1 Element
- 7.2 Elements
1 系列文章地址
- java 汇率换算器的实现(1)
- java 汇率换算器的实现(2)
- java 汇率换算器实现-插曲1-正则表达式(1)
- java 汇率换算器的实现(3)
2 更多参考资料
http://blog.csdn.net/column/details/jsoup.html http://www.mkyong.com/java/jsoup-html-parser-hello-world-examples/
3 解释遍历一个html文档和html字符串
传送门 http://www.open-open.com/jsoup/parsing-a-document.htm http://www.open-open.com/jsoup/parse-document-from-string.htm
原文中给出的例子如下:
String html = "First parse " + "Parsed HTML into a doc.
"; Document doc = Jsoup.parse(html);
单单这个示例, 就引出了以下问题:
- 能够直接运行吗?
- 直接输出Document的结果?
3.1 运行环境设置及运行
下载jsoup.jar包, 将其放置到yourpath, 编写代码的时候具体import的内容, 应该根据jsoup的tree 进行import, 如上面的例子中使用了 Jsoup 和 Document, 那么在文件的开头就应该有这样两句话:
import org.jsoup.Jsoup; import org.jsoup.nodes.Document;
剩下的完整的内容如下:
// 再简单地将示例放入main函数中
public class JsoupDemo{
public static void main(String[] args)
throws Exception {
// Document doc = Jsoup.connect("http://en.wikipedia.org/").get();
String html = "First parse "
+ "Parsed Html into a doc.
";
Document doc = Jsoup.parse(html);
System.out.println(doc);
}
}
3.2 直接输出Document
编译运行如下(linux):
javac -classpath yourpath/jsoup.jar JsoupDemo.java java -cp yourpath/jsoup.jar:./ JsoupDemo
最后可以发现通过parse处理后输出地结果为格式化后的html代码:
First parse Parsed Html into a doc.
3.3 parse(String html, String baseUri)中baseUri具体指什么
如在html中出现了相对路径, 如 href="page/a.html", 那么就会被解析为 href="$baseUri/page/a.html" 如将示例进行修改为:
String html = "标题 "
然后调用:
Document doc = Jsoup.parse(html, "http://example.com/");
最后输出的doc依然和String html相同. 那么这个额外的baseUri是怎么起作用的呢. google了一下, 参见: stackoverflow中的解释 , 可见需要下述的方式才能够起作用:
for (Element link : doc.select("a")) {
System.out.println(link.absUrl("href"));
}
4 解释一个body片断
传送门 http://www.open-open.com/jsoup/parse-body-fragment.htm
Jsoup.parseBodyFragment 方法可以将字符串中的
String html = "what Lorem ipsum.
";5 从一个URL, 文件加载一个Document对象
传送门 http://www.open-open.com/jsoup/load-document-from-url.htm http://www.open-open.com/jsoup/load-document-from-file.htm
通过以下尝试, 得知Jsoup在connect过程中, 已经对html文档的相应的编码方式进行了处理:
Document doc = Jsoup.connect("http://www.baidu.com/").get(); System.out.println(doc)6 其他更多文档中的内容请参见
传送门 http://www.open-open.com/jsoup/dom-navigation.htm
7 其中常用的数据结构简介
7.1 Element
html的element包括形如:
text 的部份.常用的方法有:
- attr: 获得相应属性的内容
- getElementsBy{many different kinds}: 获取不同类型的集合
- text: 获取这个元素以及子集所包含的文本
- 其他参见: http://jsoup.org/apidocs/org/jsoup/nodes/Element.html
7.2 Elements
表示结构相同的element的集合
常用的方法:
- 对element进行遍历:
Elements eles = ...; for (Element ele : eles) {} 对elements进行遍历- select: 选择相应结构的elements
- get: 获取特定index的element
- 其他参见: http://jsoup.org/apidocs/org/jsoup/select/Elements.html
Date: 2014-05-14 Wed
Org version 7.8.11 with Emacs version 24
Validate XHTML 1.0