【问题标题】:Common Lisp package for parsing invalid HTML? [closed]用于解析无效 HTML 的 Common Lisp 包? [关闭]
【发布时间】:2011-06-03 17:58:18
【问题描述】:

作为一个学习练习,我正在用 Common Lisp 编写一个网络爬虫。 (粗略的)计划是:

  1. 使用Quicklisp 管理依赖关系
  2. 使用Drakma加载页面
  3. xmls解析页面

我刚刚遇到了一个症结:我正在抓取的网站并不总是生成有效的 XHTML。这意味着第 3 步(使用 xml 解析页面)不起作用。而且我像this guy 一样不愿意使用正则表达式:-)

那么,谁能推荐一个用于解析无效 XHTML 的 Common Lisp 包?我正在想象类似于 .NET 的 HTML Agility Pack ...

【问题讨论】:

    标签: common-lisp web-scraping quicklisp


    【解决方案1】:

    “closure-html”项目(在 Quicklisp 中可用)将从伪造的 HTML 中恢复,并生成您可以使用的东西。我使用closure-html 和CXML 来处理任意网页,效果很好。 http://common-lisp.net/project/closure/closure-html/

    【讨论】:

    • closure-html 似乎在 GNU CLISP 下不起作用——但是(不希望引发一场圣战)看起来转向 SBCL 将是轻松的。我仍然觉得我在 Lisp 荒野中摸索,但至少现在我能听到声音了。希望它们不只是在我的脑海中:-)
    【解决方案2】:

    对于下一位访客:今天我们有 Plump:https://shinmera.github.io/plump

    Plump 是 HTML/XML 类文档的解析器,专注于对无效标记宽容。它可以处理无效属性、错误的结束标签顺序、未编码的实体、不存在的标签类型、自结束标签等。它将文档解析为类表示,并提供一小组 DOM 函数来操作它。不过,您可以随意更改它以解析为您自己的类。

    我们还有其他库来查询文档,例如同一作者的lquery(类似jquery)或CLSS(简单的CSS选择器)。

    我们现在还有一个关于 Common Lisp Cookbook 的小教程:https://lispcookbook.github.io/cl-cookbook/web-scraping.html

    另见 Common Lisp 维基:http://www.cliki.net/Web

    【讨论】:

    【解决方案3】:

    Duncan,到目前为止,我在 Ubuntu Linux 和 Windows(7 和 XP)下都成功使用了 Clozure Common Lisp,所以如果你正在寻找一种可以在任何地方工作的实现,你可以试试这个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-18
      • 2011-05-12
      • 2011-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多