如何在Clojure中懒洋洋地阅读网页

Ray*_*yne 4 networking clojure lazy-evaluation

我和一位朋友最近在我的Clojure IRC机器人中实现了链接抓取.当它看到一个链接时,它会淹没页面并从页面中抓取标题.问题是它必须啜饮整个页面才能获取链接.

如何在第一个页面之前懒洋洋地阅读页面 </title>?

cgr*_*and 6

使用line-seq但不要忘记在完成后关闭底层流.


Mic*_*zyk 6

我不会指望HTML必须以明智的方式分成几行; 没有在我们自己的后院外面看,例如Compojure(或者当前Hiccup,我猜)不打扰插入换行符,我相信(更新:刚检查打嗝 - 没有换行).

我建议的是懒惰的XML解析(带clojure.contrib.lazy-xml)java.io.BufferedInputStream.

  • 顺便说一句,我不是这方面的专家,但我不相信你可以通过HTTP请求比页面的完整源代码少的东西; 这不是一个真正的问题,因为你无论如何都不会得到像图像这样的大事.`slurp*`会在源代码上找到一个`java.io.BufferedReader`,`cclazy-xml`会做一件可能对性能很重要的事情,这不是*解析`<title>之外的任何东西... </ title>`你正在寻找的位.(嗯,我应该把这个包括在正确的答案中......?也许我下次会,现在休息一下.) (3认同)