[请教] Emacs lisp 中有哪些工具可以做简单的 HTML 网页抓取

搜了一下,好像没有找到这方面的工具,请教是否有人写过类似的代码。

Emacs 有wget扩展,或者w3m抓一下纯文本,比如我写的 org-w3m.el 可以直接用Org格式保存网页文本。

之前用过这个包自动将网页转为 org-mode 格式。 效果还不错

我没有说清楚,我想问Emacs lisp 中有没有 web scraping 流程中 CSS selector 这种东西。用wget 或者 w3m 抓到纯文本后,估计要用正则扣想要的内容了。

论坛已经有人发了类似的东西,dom-select.el: 基于 dom.el 实现的 CSS 风格选择器 ,顺藤摸瓜,类似的工具还有几个 dom-select , esxmlelqueryenlive

其实最佳的方案是找一些 “无头浏览器”, 写一些JS做DOM查找,最后通过Emacs来调用这些命令行。

当然这样实现就和Emacs关系不是很大。

Elisp写的DOM方案不知道性能如何。

建议在 dom-select.el 和 esxml 二者之中选一,其它不用考虑。

实现上 esxml 比较优雅,dom-select.el 简单粗暴。完善度差不多,各有所长,详见这个表:

感谢提供另一个思路。虽然用 Emacs 也一段时间了,但用 Elisp 只写过一些配置,尝试写些小的 project 。不行的话或者性能有问题的话再采用这种方法。

感谢建议,假期有空的时候尝试用一下。

单论 Elisp 的性能,可能不如其它语言。好在 Emacs 提供了 libxml-parse-{html,xml}-region 两个 C 函数来生成 DOM,在此基础上实现 CSS Selector 即可。

轻度使用性能问题应该不大,而且有跨平台优势。我写了两个基于 dom-select.el 的扩展,实际使用中感觉短板还是在网速。