• 締切済み

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

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

noname#236785
noname#236785
  • Perl
  • 回答数2
  • ありがとう数1

みんなの回答

  • 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

  • HTMLからPerlを呼び出すには?

    今、Perlで他のサイトのtxtファイル(中身はliタグやaタグのHTMLファイルで、そのサイトではSSIで呼び出されています)を、入手して表示させるプログラムを作っています。 これを、呼び出して、あたかも私のサイトのように見せるにはどうすればよいでしょうか? 現在はiframeを使ってそのままtxtファイルのアドレスを指定しているのですが、拡張子がtxtであるため、IEでしか見れないという不具合があります。 これを解決するために、とほほさんのwww入門 http://tohoho.wakusei.ne.jp/wwwperl2.htm#socket で紹介されているPerlを参考にしました。そのPerlのファイルをブラウザから直接URL指定すれば実行できるようにはなり、txtの中身が表示されるようになったのですが、どのようにHTMLから呼び出せばよいのかわかりません。 やはりSSIで実行するしかないのでしょうか。 javascriptの場合、<script>タグでHTMLに直接スクリプトを記述できますが、Perlでもそのようなことは可能ですか?

    • ベストアンサー
    • HTML
  • HTMLファイルをCSVファイルへ

    はじめまして。 HTMLファイルのタグ以外のデータを最終的にCSVファイル(カンマ区切り)に 落としたいのですが、このプログラムをPerlで書かなければなりません。 ツリー構造を利用?して書くと言われましたが、良くわかりません。 Perlも始めたばかりなので、わかる方は教えてください。

  • Perlの部分的なHTML出力

    調べてみたんですがちょっと探し当てられなかったので教えてください。 HTMLファイルの中である一部分だけPerlによる出力でページを表示させたいのですが、それは可能でしょうか? 自分なりに調べて試してみたのは、HTMLで<IMG>タグをつかってPerlを呼び出し、Perlにprint文で出力を書けばいいのかな? とやってみましたが、できません。 全てPerlで出力するしか方法はないのでしょうか? ご解答お願いします

  • HTMLとPERLの関係について教えてください

    ホームページのカウンターなどPERLでかけると聞きました。 これはhtmlファイルやCSSファイルのほかにPERLファイルみたいのがあって、HTMLファイルからPERLファイルにリンクで飛んで、PERL言語を動かして、カウンターを表示させる、みたいな手順でしょうか? プログラム素人なので、なるべく簡単にお教えいただければあり額存じます。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • HTMLとPerl間のページ遷移について。

    HTMLとPerl間のページ遷移について。 こんにちわ。 HTML(index.html)でログインフォーム(ユーザ名、パスワード)を作成し、そこに入力した情報を、Perl(login.pl)にPOST送信します。 Perlでは、受け取ったパラメータをチェックし、ユーザ名とそのパスワードが正しければ、もとのHTMLファイル(index.html)にページ遷移し、もともとあったログインフォームをJavaScriptで削除し、「ログイン中」と表示させる、ということをしたいのですがわからないところがあり投稿させていただきました。 現在、クライアントでは、JavaScriptを使ってログインフォームを作っています。そして、フォームの中の値を取得して、POST送信することはできます。次に、サーバにてPerlで受け取ったパラメータをチェックし、ユーザ名とパスワードの認証をとるところまではできています。しかし、その後にどうすべきかがわかりません。locationで、もとのHTMLファイル(index.html)を指定しても、ログインを認証したという情報は保持しておらず、それでは意味がありません。 Perlでログインを認証した後に、認証したという情報を保持したままHTMLページに遷移する事は可能でしょうか。可能であればその方法を教えていただきたく思います。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • HTMLのタグをPerlに書き換えるには?

    HTMLのタグをPerlに書き換えたいのですが コピー&ペースト感覚でPerl変換が出来るような エディターかサイトはないでしょうか? 今のHTMLのデザインをそのまま使いたいので、、 HTMLへの書き出し(<Print>)・・・の部分だけで いいのですが。  御指導宜しくお願いいたします。

    • ベストアンサー
    • CGI
  • HTML(AJAX)-perl -DB(MySQL)-perl -HTML(AJAX)のデータの流れについて。

    こんにちわ。 早速ですがよろしくお願いします。 タイトルの通り、画面入力のデータAをperlに投げてAを元にperl側でDBデータ取得(A')、A'を元の入力画面で処理結果として出力する事を考えています。 HTML(AJAX)-perl -DB(MySQL)-perl ↑ここまではできたのですが、最後の perl -HTML(AJAX) が出来ず、A'を入力画面に返す方法が分かりません。 ちなみに処理結果(A')をHTML側でYahoo! User Interfaceを使用してテーブル処理する予定です。 お恥ずかしながらプログラミングに関しての知識が乏しくて恐縮なのですが、どうぞよろしくお願い致します。

    • ベストアンサー
    • Perl
  • Perlでファイルの名前を変更するには?

    Perlであるフォルダの中にある、いくつかのファイルの名前を 自動的に変更するにはどのようなプログラムにしたらよろしいのでしょうか? 具体的には、ファイルの名前が二桁の数字(例えば13)で表されているとします。 その二桁の数字を四桁(例えば0013)にしたりなどです。 プログラミング初心者でわからないことが多く困っています。 なるべく詳しくお願いします。 できれば、近いプログラムを作って頂ければ・・・ 急ぎでお願い致します。

  • HTML文書の表示について

    学校から、「入力されたあなたのプロフィールを綺麗な表形式で見せるHTML 文書を表示するプログラムを作れ」という課題が出されたのですが、解答例がなく、何をやったら良いのかよくわかりません。 自分が数字や文字列を入力すると、HTMLとしてタグや入力して内容が出てくるような感じです。 プログラミング演習の課題で、C++でプログラムするのですが、わかる方いらっしゃいましたら、どうかよろしくお願いします。

  • HTMLから自動的に文章取得

    HTMLデータの中から、狙った文章をPerlで抜き出すプログラムを書こうとしています。 (1)urlが並んでいるテキストファイルから、1番上を$urlに入れる (2)urlからHTMLを取得する (3)HTMLを解析、文字列の取得 (4)「author: title: 」のように、形を変えて、新たなテキストファイルに1行printする。 (5)すべてのurlに繰り返す と動くプログラムです。 LWP::Simpleのget関数を使うか、wgetを使うかも考えています。 ここでの質問は、(1)の、URLを上から順に引っ張ってくるプログラムの作り方を聞きたいです。 $i行目の改行までを取得、という考えでいいでしょうか? ベターな方法や、少しでも参考になる情報がありましたら教えていただけると嬉しいです。

    • ベストアンサー
    • Perl