• ベストアンサー

Perl webのテキストボックスに入力し送信取得

Perl初学者です。Perlでのインターネット通信に興味があります。 webサイトのテキストボックスにテキストを入力し、それを送信・結果を取得するためのプログラムを教えてください! (例) 単語を英訳するプログラムが作りたかったので、”http://ejje.weblio.jp/”の検索ボックスに単語を入れて送信し、帰ってきたURLのhtmlを取得する、といった感じ? 少し勉強したLWPモジュールを使って頂けると嬉しいです。 もちろん、こっちの方が効率がいいよ、といった方法があれば是非教えてください! よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

適当。表示がくずれるので、空白2文字を全角空白にしていることに注意。 #!/usr/bin/perl -T use strict; use warnings; use utf8; use CGI; use CGI::Carp qw(fatalsToBrowser); use CGI::Pretty; use Encode; use LWP::UserAgent; use HTTP::Response; use HTML::TreeBuilder; use constant URL => q{http://ejje.weblio.jp/content}; my $q  = CGI->new(); my $word = $q->param("word"); my $mean = q{}; if ( defined $word ) {   my $ua = LWP::UserAgent->new;   $ua->agent('Mozilla/5.0');   $ua->timeout(10);   my $url = URL . '/' . $word;   my $req = HTTP::Request->new( GET => $url );   my $res = $ua->request($req);   if ( $res->is_success ) {     my $tree = HTML::TreeBuilder->new;     $tree->parse( decode( 'utf8', $res->content ) );     my ($attr) = $tree->look_down( 'class', 'Kejje' );     $mean = $attr->as_HTML;   }   else {     $mean = $res->error_as_HTML;   } } else {   $word = ''; } my $body = do { local $/; <DATA> }; $body =~ s/%%word%%/$word/; $body =~ s/%%mean%%/$mean/; binmode STDOUT, ':encoding(utf8)'; print $q->header( -charset => 'UTF-8' ),   $q->start_html( -title => "test", -lang => 'ja', ),   $body,   $q->end_html; __DATA__ <form method="get"> Word : <input type="text" name="word" /><br/> <input type = "submit" /> </form> <hr> Word : <br> %%word%% <br> Mean : <br> %%mean%%

gohandaisuki520
質問者

お礼

回答ありがとうございます。 なんとか読み解いてみようと思います!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • テキストボックスより値を取得して送信

    1つのテキストボックスにあるデータの値を取得して送信するボタンが作りたいのですが、どうしたら良いでしょう。 値を取得(テキストボックスのデータをinput type=hiddenに複写する)というjavascriptは出来ました。 でも複写するボタンをまずクリックして値を複写してからから、送信ボタンを押すという2回クリックが要ります。 なんとか、1回ボタンを押すと、テキストボックスの値を複写して、送信するという仕組みにしたいのですが、どんなfunctionを書けば良いかわかりません。 小生Javascriptは初心者に近いですが、がんばってますので宜しくご教授ください。

  • Web上のテキストボックス

    アプレットやサーブレットではなく、GUIで作ってます。 JFrameでフォームとテキストボックスとボタンを作っています。 ボタンをクリックするとテキストボックスに書かれた内容が、指定したWeb上のテキストボックスに表示されるというプログラムをつくろうとしています。 考えでは、指定したWeb上のURLのHTMLソースを読み取り、「INPUTタグ」がみつかったらその「VALUE」の中にデータをいれようと考えています。 これを実現する方法を教えてください><

    • ベストアンサー
    • Java
  • モジュールを使わずにhttpアクセスするには

    レンタルサーバ上に置いた perlプログラムで 他サイトのページの内容を httpアクセスして取り出そうと思っています。 サーバの制限がきつくて LWP::Simpleなどのモジュールを全く使えないのですが、 どのようにして httpアクセスをさせればよいのでしょうか。 URLを投げてページの内容をテキストファイルで取り出すという 単純なことができれば充分です。

    • ベストアンサー
    • Perl
  • コントロール配列のテキストボックスの大きさの自動調整

    日本語に対して英訳を入力し正誤を判定するプログラムを作っています。 答えの英文(1文ずつ)を入力するテキストボックスを、単語数分だけコントロール配列で自動表示したいのですが、その際にテキストボックスを単語の文字数に適した大きさにするやり方がわかりません。 (例 I am a girl.が答えなら、テキストボックスを4つ表示し、 「I」に該当するテキストボックスは1文字分の大きさで表示) 英文から単語数、単語の文字数を計算する部分はだいたいわかりますが、親切な方がいらっしゃいましたらその部分もお願いいたします。 初心者なので簡単な質問かもしれませんが、宜しくお願いします。

  • テキストボックスのオブジェクト渡し

    えー始めまして。 最近、開発に復帰してブランクが3年ほどあるものなのですが、 現在、C/Sのクライアント側アプリをVB6.0で開発しています。 そのアプリのなかで、テキストボックスの入力チェックを行おうと、 プログラムを書いたのですが、テキストボックスオブジェクトを引数として サブモジュールに渡す方法ってわかる方いらっしゃいますか? サブモジュール側でオブジェクトを引数として使っているので、 規定オブジェクトのテキストボックスだと、オブジェクトイメージではなく 設定されているテキストの内容しか、引数で渡せなくて困っているんです。 このサブモジュールは汎用性を持たせようと作成したので、 これができないんであれば若干プログラムの見直しが必要なんです。 もし、ご存知の方がいらしたらご回答お願いします。

  • perlによるxmlファイルの取得

    あるサーバにあるxmlファイルの内容を取得する為に use LWP::Simple; $url = "http://***/***.xml"; #取得するXMLファイル $text = get($url); 以上の様な方法を用いたのですが、目的のxmlファイルを取得する際のみ、$textに格納される内容が『1文字ごとに半角スペースのようなもので区切られている』という意図しないものになってしまいます。 他のxmlファイルは問題なく取得できるのですが・・・・・・何か特別な方法が必要なのでしょうか。

    • ベストアンサー
    • Perl
  • perlで必要な所までHPを取得したい

    ローカルにperlプログラムを置いています。 このプログラムでサイトのHPに定期的なアクセスしています。 必要な情報はページの中間程度に入っています。 現在は、LWPを使っているのですが、全て情報を取得してから必要な情報を解析するため速度アップの為の改良余地があるように感じています。 HPを全部読む必要はなく、少しでも速いプログラムを作りたいのですがどの様にすればよいでしょうか?

    • ベストアンサー
    • Perl
  • perl で 画像を取得したい

    下記perlのコードを書いたのですが、なぜか、画像を取得することができません。 メモ帳で開くと、画像データっぽい文字列はあるのですが、普通に見ることができません。 なぜでしょうか?また、どのように改良すれば取得できますか? ご存知の方教えていただけないでしょうか? 宜しくお願い致します。 $source = &GetImg('http://www.goo.ne.jp/img/logo/gootop_logo.gif'); $FileOut = "tmp.gif"; open(OUT, ">$FileOut"); print OUT $source; close (OUT); sub GetImg() { my($url) = @_; use LWP::UserAgent; my $browser = LWP::UserAgent->new; my $response = $browser->get($url,'User-Agent' => 'Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.5) Gecko/20031007'); my $img_file = $response->content; return $img_file; }

    • ベストアンサー
    • Perl
  • perlでhtmlファイルを取得したいのですが

    perlでmixiなどログイン処理のあるサイトのhtmlファイルを取得したいのですがなかなか上手くいきません。 どなたかご教授をお願いします。 ----------------------------------------------------------------- #!/usr/bin/perl use LWP::UserAgent; use HTTP::Cookies; use HTTP::Request::Common; use LWP::Simple; my $mixi_email = 'メールアドレス@yahoo.co.jp'; my $mixi_password = 'パスワード'; my $login_url = 'http://mixi.jp/login.pl'; my $home_url = 'http://mixi.jp/home.pl'; my $mixi = LWP::UserAgent->new($mixi_email, $mixi_password); #Cookieを有効にする# my $cookie = sprintf('cookie_%s_%s.txt', $$, time); my $cookie_jar = HTTP::Cookies->new(file => $cookie, ignore_discard => 1); $mixi->cookie_jar($cookie_jar); #ログインする# my @form = ('email' => $mixi_email, 'password' => $mixi_password, 'next_url' => $home_url);#POSTで送る内容の配列 my $request1 = &HTTP::Request::Common::POST($login_url, [@form]); #リクエストヘッダの生成 my $response1 = $mixi->request($request1); #ログインする getstore("http://mixi.jp/search_community.pl?from=global(取得先の指定)", "test.html"); ---------------------------------------------------------------------- 試しに書いてみたのですがうまくいきませんでした

  • web文書を取得するプログラムのサイト内での不具合について

    perl初心者です。 自分のwebサイトのコードを取得するプログラムをつくろう と思っているのですが、下のコード -------------------------------------------------------- #!/usr/local/bin/perl use LWP::UserAgent; use HTTP::Request; use HTTP::Response; our $URL = 'http://www.google.co.jp/'; # アクセスする URL my $proxy = new LWP::UserAgent; my $req = HTTP::Request->new('POST' => $URL); # HTTP リクエストを作成 my $res = $proxy->request($req); # $res に HTTP レスポンスが返ってくる print $res->content; # HTML を表示 1; --------------------------------------------------------------- でターゲットのurlが上のgoogleだと取得できるんですが 自サイトのurl'http://○○.××.△△.com/'だと 500 Internal Server Errorとなってしまいます。 因みにレンタルサーバーを利用しています。 サーバーでは技術的な質問は受け付けてないとの事なので、 スクリプトの質問とは少しズレますが分る方がいましたら ご教えていただきたく質問いたしました。