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

发布于 2024-08-29 09:10:13 字数 127 浏览 4 评论 0原文

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

一个人如何懒洋洋地阅读一页直到第一个

I and a friend recently implemented link grabbing in my Clojure IRC bot. When it sees a link, it slurps the page and grabs the title from the page. The problem is that it has to slurp the ENTIRE page just to grab the link.

How does one go about reading a page lazily until the first </title>?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

ι不睡觉的鱼゛ 2024-09-05 09:10:13

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

Use line-seq but don't forget to close the underlying stream when done.

晨曦慕雪 2024-09-05 09:10:13

我不认为 HTML 一定会以合理的方式分成行;不看我们自己的后院外面,例如Compojure(我猜目前是Hiccup)不会插入换行符,我相信(更新:刚刚检查了Hiccup - 没有换行符)。

我建议在 java.io.BufferedInputStream 之上进行惰性 XML 解析(使用 clojure.contrib.lazy-xml)。

I wouldn't count on the HTML necessarily being split into lines in a sensible way; without looking outside of our own backyard, e.g. Compojure (or Hiccup currently, I guess) doesn't bother inserting line breaks, I believe (update: just checked Hiccup -- no line breaks).

What I'd suggest instead is lazy XML parsing (with clojure.contrib.lazy-xml) on top of a java.io.BufferedInputStream.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文