【问题标题】:Some questions regarding a simple command-line web-scraper (Clojure/ClojureScript)关于一个简单的命令行 web-scraper (Clojure/ClojureScript) 的一些问题
【发布时间】:2016-01-09 09:14:09
【问题描述】:

我正在用 Clojure / ClojureScript 编写一个小型网络抓取程序。这是一个非常简单的命令行应用程序(适用于 Linux),它访问网页、过滤结果并将其打印到控制台。

但是,这引发了一些问题 - 尤其是因为我来自 JS/Node.js 背景,而且 Clojure 对我来说还很陌生。

(1) 首先:对于Clojure 程序来说,这是否是一项好任务,它将作为.jar 文件交付给JVM。启动JVM很慢,但是程序需要快速启动和停止,因为它是日常使用的。但我想有办法让一个 JVM 在后台运行,它正在等待然后按需执行 jar 文件。 (?)

(2) 另一种方法是使用 ClojureScript 并将其编译为节点友好的 JavaScript。这肯定会解决上一段的观点。但我不确定是否有必要。

(3) 另一个问题是,使用哪个库。而这当然也和前面的几点有关。为此目的是否有一个好的 Clojure/ClojureScript 库?基本上用于使用 CSS 选择器查询 DOM。在 JS 中,我会使用 JsDom,它读取 HTML 字符串并从中创建一个“Shadow DOM”。 Clojure 世界中有哪些等价物?

(4) 一个加号肯定是一个处理常见网络抓取任务的库。例如:处理分布在多个编号页面上的信息。 (例如搜索引擎的结果)

有人给我一些提示吗?

【问题讨论】:

    标签: node.js clojure web-scraping jvm clojurescript


    【解决方案1】:

    正如您已经确定的那样,Clojure 程序必须被编译成 JVM 字节码。由于你有 JS 的背景,我建议你为 Node.js 编译你的爬虫。如果您是 Clojure 的新手,那么使用一些熟悉的工具会有所帮助。

    通过这种方式,您可以设置相同的工具链来进行客户端和服务器构建。您还可以利用 V8 近乎即时的启动时间。虽然其实有plenty of ways to make the JVM startup less painful

    您可能想看看hickory——一个用于解析 HTML 字符串并使用类似 css 的选择器对其进行操作的库。但是,如果您要编译为 JS,也可以在 NPM 上找到大量可用的抓取库和工具。

    对于具有更多功能的抓取库,您可能需要查看 enlivethis tutorial,因为这似乎是一个不错的起点。

    【讨论】:

    • 嘿,丹·普林斯,这么多年过去了,有什么更新吗?我需要做类似的事情。我的第一个 ClojureScript 应用程序。 @丹王子
    • 这些天我会用lumo-cljs.org 构建它,并在必要时连接到 npm。
    猜你喜欢
    • 1970-01-01
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多