`

Jsoup解析html及body片断

阅读更多

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继承NodeTextNode继承 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中适当的方法或它父类 ElementNode中的方法来取得相关数据。

=================================================================

解析一个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中文Api.docx ...Jsoup 提供了多种示例程序,例如:获取所有链接、解析 HTML 字符串、解析 body 片断等。 Jsoup 是一个功能强大且灵活的 HTML 解析器库,能够满足各种爬虫和数据抽取的需求。

    jsoup Cookbook(中文版).chm

    解析一个body片断 根据一个url加载Document对象 根据一个文件加载Document对象 数据抽取 使用dom方法来遍历一个Document对象 使用选择器语法来查找元素 从元素集合抽取属性、文本和html内容 URL处理 程序示例:获取...

    jsoup中文帮助文档

    的 Document,然后将传入的 HTML 片断作为 body 添加到该 Document 中。这样,你可以像处理完整 HTML 文档一样处理这个 body 片断。在处理完成后,你可以使用 Document 提供的各种方法来提取数据。 4.根据一个 URL ...

    jsoup中文API

    如果只有 HTML 片断,例如 `&lt;div&gt;&lt;p&gt;Lorem ipsum.&lt;/p&gt;&lt;/div&gt;`,可以使用 `Jsoup.parseBodyFragment(String html)` 创建一个仅包含 body 的文档。这在处理用户评论或 CMS 内容时非常有用。 4. **数据抽取** - **...

    Jsoup中文API

    当你只有 HTML 片断时,可以使用 `Jsoup.parseBodyFragment(String html)`,这会创建一个只包含 `body` 元素的 `Document`。这样处理后的文档可以方便地插入到其他 HTML 文档中。 4. 数据抽取: - DOM 遍历:通过...

    Jsoup文档帮助_中文

    这将解析 HTML 片断,并将其作为一个完整的 body 部分处理。你可以通过 `doc.body()` 获取解析后的 body 元素。 4. **数据抽取** - **DOM 遍历**:你可以使用 `doc.children()`,`element.childNode(i)`,`element...

    jsoupAPI中文版

    解析一个body片断** - **问题**:有一个HTML片断(如一个div包含一对p标签;一个不完整的HTML文档),需要对其进行解析。 - **解决方案**:使用 `Jsoup.parseBodyFragment(String html)` 方法。 - 示例代码:`...

    jsoup帮助文档

    此外,`Jsoup.parseBodyFragment(html)` 专门用于解析一个 HTML 片断,例如一个独立的 `&lt;body&gt;` 部分。 对于解析后的 HTML 文档,jsoup 创建了一个干净的 DOM 树,即使原始 HTML 格式不完整。这个 DOM 树由 `...

    jsoup api

    3. **解析body片段** - `Jsoup.parseBodyFragment(String html)`方法用于解析不完整的HTML片断,只处理body部分,适用于处理用户提交的内容或CMS编辑的body部分。 - 解析后的`Document`对象仅包含body内容,可以...

    关于josup帮助文档

    **解决方法**:使用`Jsoup.parseBodyFragment(String html)`方法可以有效地解析body片断。 **代码示例**: ```java String html = "&lt;div&gt;&lt;p&gt;Lorem ipsum.&lt;/p&gt;"; Document doc = Jsoup.parseBodyFragment(html); ...

    jsoup_api,一看就会

    返回的 Document 对象包含一个 body 元素,该元素包含了解析后的 HTML 片断。这样,你就可以像处理整个文档一样处理这个 body 片断,例如提取内容、查找特定元素等。 4.根据一个 URL 加载 Document 对象 如果你需要...

    jsoup Cookbook(中文版)

    的 Document,然后将传入的 HTML 片断作为 body 添加到该 Document 中。这样,你可以像处理完整 HTML 文档一样处理这个 body 片断。在上述示例中,`doc` 对象的 `body()` 方法将返回包含 `&lt;div&gt;&lt;p&gt;Lorem ipsum.&lt;/p&gt;...

    jsoup中文帮助文档.docx

    的 body 片断。返回的 Document 对象包含一个 body 元素,该元素包含了解析后的 HTML 内容。这样,你就可以对这个 body 元素进行操作,例如查找特定的元素或者提取数据。 4. 根据一个 URL 加载 Document 对象 当你...

Global site tag (gtag.js) - Google Analytics