2012-03-24 11 views
7

URL文字列からhtml応答を取得するにはどうすればよいですか?この使い方: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"])) 

私はあなただけのHTTP GETと同等のものをやりたいと仮定していてくれws-connect: Invalid server handshake response. Expected #"\242\266\336\364\360\"\21~Y\347w\21L\2326\"", got #"<!DOCTYPE html>\n"

+0

[ラケットのウェブページを読むにはどうすればいいですか?](http://stackoverflow.com/questions/14016254/how-do-i-read-a-web-page-in-racket) –

答えて

11

を与えます。

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

HTTP GETを行うにはget-pure-portを使用します。入力ポートを返します。また、上記のURLはリダイレクトされますので、リダイレクトを有効にする必要があります。

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

をそれとも、HTMLやXMLとしてそれを解析し、いくつかの関数に渡すことができます。あなたは、単一の文字列として応答をしたい場合は

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

あなたはport->stringを使用することができます。 PLaneTにはこのようなライブラリがいくつかあります。私は(planet neil/html-parsing:1)をお勧めします。

も参照してください。call/input-urlも参照してください。これは、ポートのクローズを自動的に処理します。

関連する問題