如何从url字符串获取html响应? (方案/球拍)

时间:2012-03-24 03:27:17

标签: html url scheme racket

如何从url字符串中获取html响应?使用这个:

#lang racket
(require net/url)
(require net/websocket/client)
(define google (string->url "http://google.com"))

(ws-connect(struct-copy url google [scheme "ws"]))

给我ws-connect: Invalid server handshake response. Expected #"\242\266\336\364\360\"\21~Y\347w\21L\2326\"", got #"<!DOCTYPE html>\n"

1 个答案:

答案 0 :(得分:11)

我假设你只想做相当于HTTP GET的事。

(require net/url)
(define google (string->url "http://google.com"))

使用get-pure-port执行HTTP GET;它返回一个输入端口。此外,上面的URL重定向,因此我们必须启用以下重定向。

(define in (get-pure-port google #:redirections 5))

如果您希望将响应作为单个字符串,则可以使用port->string

(define response-string (port->string in))
(close-input-port in)

或者您可以将其传递给某个将其解析为HTML或XML的函数。 PLaneT上有几个这样的图书馆;我推荐(planet neil/html-parsing:1)

另请参阅call/input-url,它会自动处理关闭端口。