我的工具是在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)加号肯定是一个库,它处理常见的网络抓取任务。例如:处理分布在多个编号页面上的信息。 (例如搜索引擎的结果)
任何人都有一些提示吗?
答案 0 :(得分:3)
正如您已经确定的那样,Clojure程序不会将编译成JVM字节码。由于你有JS背景,我建议你为Node编译你的刮刀。如果您是Clojure的新手,那么拥有一些熟悉的工具可以提供帮助。
通过这种方式,您可以设置相同的工具链来进行客户端和服务器构建。您还可以利用V8的近乎即时启动时间。虽然实际上有plenty of ways to make the JVM startup less painful。
您可能需要查看hickory - 一个用于解析HTML字符串并使用类似css的选择器对其进行操作的库。但是,如果您正在编译JS,那么NPM上还有大量可用的抓取库和工具。
对于具有更多功能的抓取库,您可能需要签出enlive和this tutorial,因为它似乎是一个很好的起点。