web - 如何在 Racket 中阅读网页?

标签 web lisp scheme racket

我在网上能找到的所有信息都是关于编写网络服务器的,但是关于网络客户端有用的函数似乎很少。理想情况下,我希望函数看起来像这样:

(website "http://www.google.com")

并返回一个包含整个网页的字符串,但我会对任何有效的方法感到满意。

最佳答案

这是一个简单的程序,看起来它可以执行您想要的操作:

#lang racket

(require net/url)

(port->bytes
 (get-pure-port (string->url "http://www.google.com")))

如果您像我一样,可能还想将其解析为 s 表达式。 Neil Van Dyke 的 neil/html-parsing 是这样做的:

#lang racket

(require (planet neil/html-parsing:2:0)
         net/url)

(html->xexp
 (get-pure-port (string->url "http://www.google.com")))

请注意,由于该程序引用了一个行星包,因此首次运行该程序将下载并安装 htmlprag 包。构建文档可能需要相当长的时间。不过,这是一次性成本,再次运行该程序不会超过几秒钟。

关于web - 如何在 Racket 中阅读网页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14016254/

相关文章:

Lisp Web 框架?

binding - 内联定义函数和不定义函数有什么区别?

lisp - 处理列表和附加值的开始方案 (LISP)

scheme - 返回所有其他元素列表的方案过程

iis - 如何删除多个虚拟目录?

svg - 如何在SVG中的掩码后应用过滤器?

javascript - 在 IE 中检测用户语言

lisp - delete-if 中谓词的多个参数

lisp - 为什么要进行功能/宏二分法?

html - 如何制作适合所有屏幕分辨率的网页