Webページのダウンロード
30分プログラム、その390。rfc.httpを使ってWebページをダウンロードしてみる。
ホントはmixiのクローラを作ろうと思ったんだど、うまくログインできなかったのであきらめた。
あと、http://google.co.jpを表示しようとしたら、ループにおちいったんだけどgoogle.co.jpはそんなに邪悪なのだろうか。
$ gosh curl.scm http://google.co.jp/ *** HTTP-ERROR: redirection is looping via http://www.google.co.jp/ Stack Trace: _______________________________________ 0 (> (length history) 20) At line 186 of "/opt/local/share/gauche/0.8.13/lib/rfc/http.scm" 1 loop 2 (http-get host path) At line 24 of "./2008-10-14-221418.scm" 3 (get (cadr args)) At line 28 of "./2008-10-14-221418.scm"
使い方
$ gosh curl.scm http://d.hatena.ne.jp/mzp/ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> <meta http-equiv="Content-Style-Type" content="text/css"> <meta http-equiv="Content-Script-Type" content="text/javascript"> ...
ソースコード
#! /opt/local/bin/gosh ;; -*- mode:scheme; coding:utf-8 -*- ;; ;; 2008-10-14-221418.scm - ;; ;; Copyright(C) 2008 by mzp ;; Author: MIZUNO Hiroki / mzpppp at gmail dot com ;; http://howdyworld.org ;; ;; Timestamp: 2008/10/14 22:14:22 ;; ;; This program is free software; you can redistribute it and/or ;; modify it under MIT Lincence. ;; (use rfc.http) (use rfc.uri) (define (get url) (receive [_ _ host _ path _ _] (uri-parse url) (receive [_ _ body] (http-get host path) body))) (define (main args) (print (get (cadr args))))