解析和遍历一个 HTML
HTML
HTML
HTML 文档
如何解析一个 HTML
HTML
HTML
HTML 文档:
String
String
String
String html
html
html
html =
=
=
= "<html><head><title>First
"<html><head><title>First
"<html><head><title>First
"<html><head><title>First parse</title></head>"
parse</title></head>"
parse</title></head>"
parse</title></head>"
+
+
+
+ "<body><p>Parsed
"<body><p>Parsed
"<body><p>Parsed
"<body><p>Parsed HTML
HTML
HTML
HTML into
into
into
into a
a
a
a doc.</p></body></html>";
doc.</p></body></html>";
doc.</p></body></html>";
doc.</p></body></html>";
Document
Document
Document
Document doc
doc
doc
doc =
=
=
= Jsoup.parse(html);
Jsoup.parse(html);
Jsoup.parse(html);
Jsoup.parse(html);
(
(
(
( 更详细内容可查看 解析一个 HTML
HTML
HTML
HTML 字符串 .)
.)
.)
.)
其解析器能够尽最大可能从你提供的 HTML
HTML
HTML
HTML 文档来创见一个干净的解析结果 , 无论 HTM
HTM
HTM
HTM L
L
L
L
的格式是否完整。比如它可以处理:
没有关闭的标签 (
(
(
( 比如: <p>Lorem
<p>Lorem
<p>Lorem
<p>Lorem <p>Ipsum
<p>Ipsum
<p>Ipsum
<p>Ipsum parses
parses
parses
parses to
to
to
to <p>Lorem</p>
<p>Lorem</p>
<p>Lorem</p>
<p>Lorem</p> <p>Ipsum</p>)
<p>Ipsum</p>)
<p>Ipsum</p>)
<p>Ipsum</p>)
隐式标签 (
(
(
( 比如 .
.
.
. 它可以自动将 <td>Table
<td>Table
<td>Table
<td>Table data</td>
data</td>
data</td>
data</td> 包装成 <table><tr><td>?)
<table><tr><td>?)
<table><tr><td>?)
<table><tr><td>?)
创建可靠的文档结构( html
html
html
html 标签包含 head
head
head
head 和 body
body
body
body ,在 head
head
head
head 只出现恰当的元素)
一个文档的对象模型
文档由多个 Elements
Elements
Elements
Elements 和 TextNodes
TextNodes
TextNodes
TextNodes 组成 (
(
(
( 以及其它辅助 nodes
nodes
nodes
nodes : 详细可查看 : nodes
nodes
nodes
nodes package
package
package
package
tree).
tree).
tree).
tree).
其继承结构如下: Document
Document
Document
Document 继承 Element
Element
Element
Element 继承 Node.
Node.
Node.
Node. TextNode
TextNode
TextNode
TextNode 继承 Node.
Node.
Node.
Node.
一个 Element
Element
Element
Element 包含一个子节点集合 , 并拥有一个父 Element
Element
Element
Element 。 他们还提供了一个唯一的子元
素过滤列表。
解析一个 HTML
HTML
HTML
HTML 字符串
存在问题
来自用户输入 , 一个文件或一个网站的 HTML
HTML
HTML
HTML 字符串 , 你可能需要对它进行解析并取其内
容,或校验其格式是否完整,或想修改它。怎么办? jsonu
jsonu
jsonu
jsonu 能够帮你轻松解决这些问题
解决方法
使用静态 Jsoup.parse(String
Jsoup.parse(String
Jsoup.parse(String
Jsoup.parse(String html)
html)
html)
html) 方法或 Jsoup.parse(String
Jsoup.parse(String
Jsoup.parse(String
Jsoup.parse(String html,
html,
html,
html, String
String
String
String baseUri)
baseUri)
baseUri)
baseUri) 示例代
码:
String
String
String
String html
html
html
html =
=
=
= "<html><head><title>First
"<html><head><title>First
"<html><head><title>First
"<html><head><title>First parse</title></head>"
parse</title></head>"
parse</title></head>"
parse</title></head>"
+
+
+
+ "<body><p>Parsed
"<body><p>Parsed
"<body><p>Parsed
"<body><p>Parsed HTML
HTML
HTML
HTML into
into
into
into a
a
a
a doc.</p></body></html>";
doc.</p></body></html>";
doc.</p></body></html>";
doc.</p></body></html>";
Document
Document
Document
Document doc
doc
doc
doc =
=
=
= Jsoup.parse(html);
Jsoup.parse(html);
Jsoup.parse(html);
Jsoup.parse(html);
描述
parse(String
parse(String
parse(String
parse(String html,
html,
html,
html, String
String
String
String baseUri)
baseUri)
baseUri)
baseUri) 这方法能够将输入的 HTML
HTML
HTML
HTML 解析为一个新的文档
(Document
(Document
(Document
(Document ) ,参数 baseUri
baseUri
baseUri
baseUri 是用来将相对 URL
URL
URL
URL 转成绝对 URL
URL
URL
URL ,并指定从哪个网站获取
文档 。 如这个方法不适用 , 你可以使用 parse(String
parse(String
parse(String
parse(String html)
html)
html)
html) 方法来解析成 HTML
HTML
HTML
HTML 字符串如
上面的示例。 .
.
.
.
只要解析的不是空字符串 , 就能返回一个结构合理的文档 , 其中包含 (
(
(
( 至少 )
)
)
) 一个 head
head
head
head 和一
个 body
body
body
body 元素。