Perl で、サイトにアクセスして HTML を取得する方法

LWP (libwww-perl という形で配布されている) を使う。LWP::Agent モジュールは、ウェブクライアント、ウェブオートメーション (ソフトウェアやプログラムが自動的にサイトにアクセスして情報を取ってくること) といったものの基本である。もうはるか彼方、何年も前からある技術なのに基本は変わっていないのがポイント。以下のスクリプトは、$URL で指定されているサイトにアクセスして、成功すればその HTML のコードをコンソールに表示、失敗したときはエラーコードを出力する例。CGI として機能させたときは、ブラウザには HTML コードでなく $URL でアクセスしたページを表示する。つまりプロキシとして動作するということ。 シンプルなバージョン
#!/usr/bin/perl

use LWP::UserAgent;
use HTTP::Request;
use HTTP::Response;

our $URL = 'https://perltips.twinkle.cc/'; # アクセスする URL

my $proxy = new LWP::UserAgent;

my $req = HTTP::Request->new('GET' => $URL); # HTTP リクエストを作成
my $res = $proxy->request($req); # $res に HTTP レスポンスが返ってくる

print $res->content; # HTML を表示

1;
ちょっと長いバージョン
#!/usr/bin/perl

use LWP::UserAgent;
use HTTP::Request;
use HTTP::Response;

our $URL = 'https://perltips.twinkle.cc/'; # アクセスする URL

my $proxy = new LWP::UserAgent;
$proxy->agent('your own created browser name here'); # 任意
$proxy->timeout(60); # 任意

my $req = HTTP::Request->new('GET' => $URL);
my $res = $proxy->request($req);
my $content = $res->content;

print "Content-Type: text/html\n\n"; # HTML ヘッダ (CGI として動作できる)
if($res->is_success) {
    print $content;
} else {
    print 'HTTP エラーコード: ' . $res->code;
}

1;
参考書とリンク Web クライアントプログラミングの本は、タイトルには 「Web プログラミング」 とついているものの、中身は LWP の解説本です。
トラックバック URL: https://perltips.twinkle.cc/trackback/40
Posted on 2005-12-14 by yas |
参考書リスト
Trackback from Perl Tips: Perl で、サイトにアクセスして HTML を取得する方法 Web クラ......
Posted by Perl Tips (未認証ユーザ) on 2006/01/20(金) 23:13
Perl で、POST したい。
Trackback from Perl Tips: Perl で POST するには、LWP で my $req = HTTP::......
Posted by Perl Tips (未認証ユーザ) on 2006/11/21(火) 10:28
Perl で、BASIC 認証(基本認証)付きのサイトにアクセスするには?
Trackback from Perl Tips: LWP::UserAgent を使うのだが、以下のコードで太字の行がポイント。......
Posted by Perl Tips (未認証ユーザ) on 2006/11/21(火) 10:29