如何阅读Racket中的网页?

时间:2012-12-24 01:55:19

标签: web lisp scheme racket

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

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

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

1 个答案:

答案 0 :(得分:9)

这是一个看起来像你想要的简单程序:

#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程序包。构建文档可能需要相当长的时间。但这是一次性成本,并且再次运行程序不应该花费超过几秒钟。