• 締切済み

PerlのHTMLファイルの読み込み

UNIXを使っています。 HTMLファイルを読み込み、その中にあるHTMLタグのチェック(終了タグがあるか、など)をするというプログラムを作っています。 URLを入力し、HTMLファイルを直接拾ってくるようなことがPerlでは出来るそうなんですがどういう風にプログラミングすればいいのでしょうか?

みんなの回答

  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.2

ちょっとたいへんですがSocketを使う手も有ります。 ## ---------------------------------------------------------------------------------ここから use strict; use Socket; ## この配列にページを格納 my @aBUFFER; ## URLをセット $arg = 'http://www.hoge.com/index_hoge.html'; # デフォルトホストの設定 my $host = ''; my $path = ''; my $port = getservbyname('http', 'tcp'); ## ポートは基本的に省略されるので # URL解析処理 $arg =~ m!(http:)?(//)?([^:/]*)?(:([0-9]+)?)?(/.*)?!; if ($3) {$host = $3;} if ($5) {$port = $5;} if ($6) {$path = $6;} ## 元のデータをデバッグ用に残す my $con_host = $host; my $con_port = $port; my $url = $path; # ソケットの生成 $ip = inet_aton($con_host) || die "host($con_host) not found.\n"; $sockaddr = pack_sockaddr_in($con_port, $ip); socket(SOCKET, PF_INET, SOCK_STREAM, 0) || die "socket error.\n"; # ソケットの接続 connect(SOCKET, $sockaddr) || die "connect $con_host $con_port error.\n"; autoflush SOCKET (1); # HTTP要求を送信 if ($http eq '1.1') { print SOCKET "GET $url HTTP/1.1\n"; print SOCKET "Host: $host\n"; print SOCKET "Connection: close\n\n"; } else { print SOCKET "GET $url HTTP/1.0\n"; print SOCKET "Host: $host\n"; print SOCKET "Connection: close\n\n"; } # HTTP応答を受信 while (chomp($buf=<SOCKET>)) { push(@aBUFFER,$buf); } # 終了処理 close(SOCKET); ## ---------------------------------------------------------------------------------ここまで 最終的にHTMLの行ごとに配列@aBUFFERに格納されます。 また、応用すれば他のプロトコルもカバーできます。 プロトコルの学習にどうぞ。

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.1

PerlではLWPというモジュールを利用すると簡単に取得できます。 use LWP::Simple; $content = get("http://example.com/"); http://homepage3.nifty.com/hippo2000/perltips/LWP/Simple.html

noname#236785
質問者

補足

すいません、便利そうなのですがLWPというモジュールの使い方がわかりません。。

関連するQ&A

専門家に質問してみよう