当前位置: 首页 > 面试题库 >

使用HTML解析器(org.htmlparser)提取并清理HTML片段

盖绪
2023-03-14
问题内容

我正在寻找一种从网页中提取HTML片段并对该HTML片段执行一些特定操作的有效方法

所需的操作是:

  1. 删除所有具有“隐藏”类别的标签
  2. 删除所有脚本标签
  3. 删除所有样式标签
  4. 删除所有事件属性(在 =“ ”上)
  5. 删除所有样式属性

我一直在使用HTML
Parser
(org.htmlparser)来完成此任务,并且能够满足所有要求,但是,我不觉得自己有一个优雅的解决方案。当前,我正在使用CssSelectorNodeFilter解析网页(以获取片段),然后使用NodeVisitor重新解析该片段以执行清理操作。

有人可以建议他们如何解决这个问题吗?我宁愿只解析一次文档并在一次解析期间执行所有操作。

提前致谢!


问题答案:

查看jsoup-它应该以优雅的方式处理所有必要的任务。

[编辑]

以下是您所需操作的完整示例:

// Load and parse the document fragment.
File f = new File("myfile.html"); // See also Jsoup#parseBodyFragment(s)
Document doc = Jsoup.parse(f, "UTF-8", "http://example.com");

// Remove all script and style elements and those of class "hidden".
doc.select("script, style, .hidden").remove();

// Remove all style and event-handler attributes from all elements.
Elements all = doc.select("*");
for (Element el : all) { 
  for (Attribute attr : el.attributes()) { 
    String attrKey = attr.getKey();
    if (attrKey.equals("style") || attrKey.startsWith("on")) { 
      el.removeAttr(attrKey);
    } 
  }
}
// See also - doc.select("*").removeAttr("style");

您将要确保属性名称等大小写无关紧要,但这应该是您所需要的大部分。



 类似资料:
  • 问题内容: 我正在将我的某些网络抓取代码从R转换为Python(我无法让geckodriver与R一起使用,但它与Python一起使用)。无论如何,我试图了解如何使用Python解析和读取HTML表。快速背景,这是我的R代码: 我将HTML页面解析为doc对象。然后,我将以开始,并通过更大的数字,直到看到所需的数据。在这种情况下,我去看了想要的数据。然后,我将读取该HTML表并将其分配给WebEl

  • 以下示例将展示防止XSS攻击或跨站点脚本攻击。 语法 (Syntax) String safeHtml = Jsoup.clean(html, Whitelist.basic()); 哪里 Jsoup - 解析给定HTML String的主类。 html - 初始HTML字符串。 safeHtml - 清理HTML。 Whitelist - 提供默认配置以保护html的对象。 clean(

  • 本文向大家介绍使用PHP的HTML DOMDocument解析HTML,包括了使用PHP的HTML DOMDocument解析HTML的使用技巧和注意事项,需要的朋友参考一下 可以通过以下代码获取<div>标记内的<div>标记内的文本,其中<div>内的class =“ main”内- 示例 输出结果 这将产生以下输出-

  • 我一直在研究用于数据提取的Jsoup示例,并提取了此链接的一个示例 J汤

  • 主要内容:Jsoup 清理HTML 语法,Jsoup 清理HTML 说明,Jsoup 清理HTML 示例以下示例将展示 XSS 攻击或跨站点脚本攻击的预防。 Jsoup 清理HTML 语法 Jsoup : 解析给定 HTML 字符串的主类。 html : 初始 HTML 字符串。 safeHtml : 清理过的 HTML。 Whitelist : 提供默认配置以保护 html 的对象。 clean() : 使用白名单清理 html。 Jsoup 清理HTML 说明 Jsoup 对象使用白名单配置

  • 下面的示例将展示在将HTML String解析为Document对象后使用方法来获取内部html和外部html。 语法 (Syntax) Document document = Jsoup.parse(html); Element link = document.select("a").first(); System.out.println("Outer HTML: " + li