我在网上能找到的所有信息都是关于编写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包。 构建文档可能需要相当长的时间。不过,这是一次性成本,再次运行该程序应该不会超过几秒钟。
编辑:在 2023 年,此代码仍然可以正常工作,但 PLAneT 目前尚未广泛使用,此时建议使用
raco install html-parsing
或使用 File>>Package Manager...
安装 html 解析包可能更惯用。菜单,然后运行
#lang racket
(require html-parsing
net/url)
(html->xexp
(get-pure-port (string->url "http://www.google.com")))