关于简单的命令行web-scraper的一些问题(Clojure / ClojureScript)

时间:2016-01-09 09:14:10

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

我的工具是在Clojure / ClojureScript中编写一个小型的Web抓取程序。这是一个非常简单的命令行应用程序(对于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)加号肯定是一个库,它处理常见的网络抓取任务。例如:处理分布在多个编号页面上的信息。 (例如搜索引擎的结果)

任何人都有一些提示吗?

1 个答案:

答案 0 :(得分:3)

正如您已经确定的那样,Clojure程序不会编译成JVM字节码。由于你有JS背景,我建议你为Node编译你的刮刀。如果您是Clojure的新手,那么拥有一些熟悉的工具可以提供帮助。

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

您可能需要查看hickory - 一个用于解析HTML字符串并使用类似css的选择器对其进行操作的库。但是,如果您正在编译JS,那么NPM上还有大量可用的抓取库和工具。

对于具有更多功能的抓取库,您可能需要签出enlivethis tutorial,因为它似乎是一个很好的起点。