JSoup Wiki:http://www.open-open.com/jsoup/parse-body-fragment.htm
解析和遍历一个HTML文档
如何解析一个HTML文档:
String html = "<html><head><title>First parse</title></head>"
+ "<body><p>Parsed HTML into a doc.</p></body></html>";
Document doc = Jsoup.parse(html);
(更详细内容可查看 解析一个HTML字符串.)
其解析器能够尽最大可能从你提供的HTML文档来创见一个干净的解析结果,无论HTML的格式是否完整。比如它可以处理:
- 没有关闭的标签 (比如:
<p>Lorem <p>Ipsum
parses to<p>Lorem</p> <p>Ipsum</p>
) - 隐式标签 (比如. 它可以自动将
<td>Table data</td>
包装成<table><tr><td>?
) - 创建可靠的文档结构(html标签包含head 和 body,在head只出现恰当的元素)
一个文档的对象模型
- 文档由多个Elements和TextNodes组成 (以及其它辅助nodes:详细可查看:nodes package tree).
- 其继承结构如下:
Document
继承Element
继承Node
.TextNode
继承Node
. - 一个Element包含一个子节点集合,并拥有一个父Element。他们还提供了一个唯一的子元素过滤列表。
=================================================================
解析一个HTML字符串
存在问题
来自用户输入,一个文件或一个网站的HTML字符串,你可能需要对它进行解析并取其内容,或校验其格式是否完整,或想修改它。怎么办?jsonu能够帮你轻松解决这些问题
解决方法
使用静态Jsoup.parse(String html)
方法或 Jsoup.parse(String html, String baseUri)
示例代码:
String html = "<html><head><title>First parse</title></head>"
+ "<body><p>Parsed HTML into a doc.</p></body></html>";
Document doc = Jsoup.parse(html);
描述
parse(String html, String baseUri)
这方法能够将输入的HTML解析为一个新的文档 (Document),参数 baseUri 是用来将相对 URL 转成绝对URL,并指定从哪个网站获取文档。如这个方法不适用,你可以使用 parse(String html)
方法来解析成HTML字符串如上面的示例。.
只要解析的不是空字符串,就能返回一个结构合理的文档,其中包含(至少) 一个head和一个body元素。
一旦拥有了一个Document,你就可以使用Document中适当的方法或它父类 Element
和Node
中的方法来取得相关数据。
=================================================================
解析一个body片断
问题
假如你有一个HTML片断 (比如. 一个 div
包含一对 p
标签; 一个不完整的HTML文档) 想对它进行解析。这个HTML片断可以是用户提交的一条评论或在一个CMS页面中编辑body部分。
办法
使用Jsoup.parseBodyFragment(String html)
方法.
String html = "<div><p>Lorem ipsum.</p>";
Document doc = Jsoup.parseBodyFragment(html);
Element body = doc.body();
说明
parseBodyFragment
方法创建一个空壳的文档,并插入解析过的HTML到body
元素中。假如你使用正常的 Jsoup.parse(String html)
方法,通常你也可以得到相同的结果,但是明确将用户输入作为 body片段处理,以确保用户所提供的任何糟糕的HTML都将被解析成body元素。
Document.body()
方法能够取得文档body元素的所有子元素,与 doc.getElementsByTag("body")
相同。
保证安全Stay safe
假如你可以让用户输入HTML内容,那么要小心避免跨站脚本攻击。利用基于 Whitelist
的清除器和 clean(String bodyHtml, Whitelist whitelist)
方法来清除用户输入的恶意内容。
相关推荐
Jsoup中文Api.docx ...Jsoup 提供了多种示例程序,例如:获取所有链接、解析 HTML 字符串、解析 body 片断等。 Jsoup 是一个功能强大且灵活的 HTML 解析器库,能够满足各种爬虫和数据抽取的需求。
解析一个body片断 根据一个url加载Document对象 根据一个文件加载Document对象 数据抽取 使用dom方法来遍历一个Document对象 使用选择器语法来查找元素 从元素集合抽取属性、文本和html内容 URL处理 程序示例:获取...
的 Document,然后将传入的 HTML 片断作为 body 添加到该 Document 中。这样,你可以像处理完整 HTML 文档一样处理这个 body 片断。在处理完成后,你可以使用 Document 提供的各种方法来提取数据。 4.根据一个 URL ...
如果只有 HTML 片断,例如 `<div><p>Lorem ipsum.</p></div>`,可以使用 `Jsoup.parseBodyFragment(String html)` 创建一个仅包含 body 的文档。这在处理用户评论或 CMS 内容时非常有用。 4. **数据抽取** - **...
当你只有 HTML 片断时,可以使用 `Jsoup.parseBodyFragment(String html)`,这会创建一个只包含 `body` 元素的 `Document`。这样处理后的文档可以方便地插入到其他 HTML 文档中。 4. 数据抽取: - DOM 遍历:通过...
这将解析 HTML 片断,并将其作为一个完整的 body 部分处理。你可以通过 `doc.body()` 获取解析后的 body 元素。 4. **数据抽取** - **DOM 遍历**:你可以使用 `doc.children()`,`element.childNode(i)`,`element...
解析一个body片断** - **问题**:有一个HTML片断(如一个div包含一对p标签;一个不完整的HTML文档),需要对其进行解析。 - **解决方案**:使用 `Jsoup.parseBodyFragment(String html)` 方法。 - 示例代码:`...
此外,`Jsoup.parseBodyFragment(html)` 专门用于解析一个 HTML 片断,例如一个独立的 `<body>` 部分。 对于解析后的 HTML 文档,jsoup 创建了一个干净的 DOM 树,即使原始 HTML 格式不完整。这个 DOM 树由 `...
3. **解析body片段** - `Jsoup.parseBodyFragment(String html)`方法用于解析不完整的HTML片断,只处理body部分,适用于处理用户提交的内容或CMS编辑的body部分。 - 解析后的`Document`对象仅包含body内容,可以...
返回的 Document 对象包含一个 body 元素,该元素包含了解析后的 HTML 片断。这样,你就可以像处理整个文档一样处理这个 body 片断,例如提取内容、查找特定元素等。 4.根据一个 URL 加载 Document 对象 如果你需要...
的 Document,然后将传入的 HTML 片断作为 body 添加到该 Document 中。这样,你可以像处理完整 HTML 文档一样处理这个 body 片断。在上述示例中,`doc` 对象的 `body()` 方法将返回包含 `<div><p>Lorem ipsum.</p>...
的 body 片断。返回的 Document 对象包含一个 body 元素,该元素包含了解析后的 HTML 内容。这样,你就可以对这个 body 元素进行操作,例如查找特定的元素或者提取数据。 4. 根据一个 URL 加载 Document 对象 当你...