【发布时间】:2012-12-10 13:48:23
【问题描述】:
我能在网上找到的所有信息都是关于编写 Web 服务器的,但关于对 Web 客户端有用的功能似乎很少。理想情况下,我希望函数看起来像这样:
(website "http://www.google.com")
并返回一个包含整个网页的字符串,但我会对任何有效的东西感到满意。
【问题讨论】:
我能在网上找到的所有信息都是关于编写 Web 服务器的,但关于对 Web 客户端有用的功能似乎很少。理想情况下,我希望函数看起来像这样:
(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")))
注意,由于这个程序是指一个planet包,第一次运行这个程序会下载并安装htmlprag包。构建文档可能需要相当长的时间。不过,这是一次性成本,再次运行该程序不会超过几秒钟。
【讨论】:
port->string 可能是您从端口拉取所有内容时所看到的:docs.racket-lang.org/reference/…