目次

内容

ベーシックな使い方

  • GETの場合は、URLとタイムアウト時間だけを指定
    #!/usr/bin/perl -w
    
    ### 標準&CPANモジュール
    use strict;
    use LWP::UserAgent;
    use HTTP::Request::Common( "GET" );
    
    #### インスタンスの生成
    my $ua = new LWP::UserAgent;
    $ua->timeout( 10 );
    
    #### 要求条件を生成
    my $req = GET( "http://www.test.co.jp/" );
    my $res = $ua->request( $req );
    print $res->as_string;
    
    ### 終わり
    exit;

SSLの場合

  • Crypt::SSLeayをインストールしておく必要があるが
  • 手順自体はHTTPの時と同じ(モジュール指定も必要なし)

UserAgentの指定

  • LWP::UserAgentのインスタンスにagentメソッドで指定
    $ua->agent( 'Mozilla' );

POSTを使う場合

  • サブルーチン「POST」をインポートし、送信内容は無名連想配列で指定
    use HTTP::Request::Common( "POST" );
     ~~略~~
    my $content = {
        "key" => "value",
    };
    my $req = POST( "http://www.test.co.jp", $content );

BASIC認証

  • authorization_basicメソッドを使う
    my $req = GET( "http://www.test.co.jp/" );
    $req->authorization_basic( "username", "password" );
    my $res = $ua->request( $req );

Cookieの利用

  • HTTP::Cookiesを利用する
    use HTTP::Cookies;
      ~~略~~
    my $cookie_jar = HTTP::Cookies->new(
        file           => "/path/to/tmp_file.txt",
        autosave       => 1,
        ignore_discard => 1
    );
    $ua->cookie_jar($cookie_jar);

作例:タイトル取得プログラム

  • 文字コード判別にEncode::Detectを使用
    #!/usr/bin/perl -w
    
    ###================================================================ 
    ### 使い方
    ###================================================================ 
    
    # URL一覧をlist.txtという名前で配置
    
    ###================================================================ 
    ### モジュール
    ###================================================================ 
    
    use strict;
    use warnings;
    
    use utf8;
    use Encode;
    
    use LWP;
    
    ###================================================================ 
    ### 設定
    ###================================================================ 
    
    ### ファイル名
    my $src_file = "list.txt";
    my $out_file = "result.txt";
    
    ###================================================================ 
    ### 処理開始
    ###================================================================ 
    
    ### 入力・出力ファイルを開く
    open( my $fh_in, $src_file ) || die( "can't open src file: $!" );
    open( my $fh_out, ">", $out_file ) || die( "Can't open result file: $!" );
    
    ### 処理開始
    my $ua = LWP::UserAgent->new();
    
    while( <$fh_in> ){
        chomp;
        next unless $_;
    
        ### URLでなければそのまま出力
        if( ! m!^https?://! ){
            print $_ . "\tng\tnot url\n";
            next;
        }
    
        ### URLアクセス
        my $res = $ua->get( $_ );
        if( $res->is_success ){
            my $title_utf8 = decode( $res->content_charset, $res->title );
            print $fh_out $_ . "\tok\t" . encode( "utf8", $title_utf8 ) . "\n";
        } else {
            print $fh_out $_ . "\tng\t" . $res->status_line . "\n";
        }
    }
    
    ### ファイルハンドルを閉じて終了
    close $fh_in;
    close $fh_out;
    exit;

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-09-25 (日) 19:27:03 (442d)