4

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

  1. 使用Quicklisp管理依赖项
  2. 使用Drakma加载页面
  3. 使用xml解析页面

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

那么,任何人都可以推荐一个用于解析无效 XHTML 的 Common Lisp 包吗?我正在想象类似于.NET的HTML Agility Pack的东西......

4

3 回答 3

11

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

于 2011-01-05T01:11:36.753 回答
4

对于下一位访客:今天我们有丰满: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

于 2016-12-18T22:14:48.553 回答
1

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

于 2011-04-13T14:55:15.243 回答