作为一个学习练习,我正在用 Common Lisp 编写一个网络爬虫。(粗略的)计划是:
我刚刚遇到了一个症结:我正在抓取的网站并不总是产生有效的 XHTML。这意味着第 3 步(使用 xml 解析页面)不起作用。而且我和这个人一样不愿意使用正则表达式:-)
那么,任何人都可以推荐一个用于解析无效 XHTML 的 Common Lisp 包吗?我正在想象类似于.NET的HTML Agility Pack的东西......
作为一个学习练习,我正在用 Common Lisp 编写一个网络爬虫。(粗略的)计划是:
我刚刚遇到了一个症结:我正在抓取的网站并不总是产生有效的 XHTML。这意味着第 3 步(使用 xml 解析页面)不起作用。而且我和这个人一样不愿意使用正则表达式:-)
那么,任何人都可以推荐一个用于解析无效 XHTML 的 Common Lisp 包吗?我正在想象类似于.NET的HTML Agility Pack的东西......
“closure-html”项目(在 Quicklisp 中可用)将从伪造的 HTML 中恢复并生成您可以使用的东西。我使用closure-html 和CXML 来处理任意网页,效果很好。http://common-lisp.net/project/closure/closure-html/
对于下一位访客:今天我们有丰满: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
邓肯,到目前为止,我已经在 Ubuntu Linux 和 Windows(7 和 XP)下成功地使用了 Clozure Common Lisp,所以如果你正在寻找一种可以在任何地方工作的实现,你可以试试这个。