Perlスクリプト改良
id:tamago_girai:20080430で作って使っていたC-iのやつがクッキー対応のページではうまく動いてくれないので修正。LWPってなんかすごいけど、やたら沢山オプションがあってよく分からん。User-Agentも指定したので、大概のページでうまくいくはず。
#!/usr/bin/env perl -w # urlcopy.pl use Win32::Clipboard; use HTTP::Cookies; use LWP::UserAgent; use Encode; my $title; my $clip; my $url = undef; $clipflag = undef; unless ($url = shift) { # コマンドラインからでなければ $clipflag = 1; $clip = Win32::Clipboard; # あとでつかう $url = Win32::Clipboard::GetText(); } my $file = q(C:\ROOT\TEXT_F\Perl_F\WebBrowser\temp.txt); my $webpage; my $cookiefile = "nt000LWP.cookiefile"; # cookie_jarの生成 my $cookiejar = HTTP::Cookies->new(file => $cookiefile, autosave => 1); # UserAgentの生成と、cookie_jarのセット my $ua = LWP::UserAgent->new; $ua->cookie_jar($cookiejar); #タイムアウトを設定 $ua->timeout(10); #ユーザエージェントを設定 $ua->agent('Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)'); #GET、PUT、POST、DELETE、HEADのいずれかを指定(httpsの場合はhttpsにするだけ) my $req = HTTP::Request->new(GET => "$url" ); #リファラーを設定 $req->referer( "$url" ); #リクエスト結果を取得 #requestメソッドではリダイレクトも自動的に処理するため、そうしたくない場合はsimple_requestメソッドを使用するとよい。 my $res = $ua->request($req); if ($res->is_success) { $webpage = $res->content; } else{ $webpage = $res->status_line . "\n"; } open MYFILE, ">$file"; print MYFILE $webpage; close MYFILE; system("C:\\ROOT\\tool\\nkf\\nkf.exe -Lw -s --overwrite $file"); system("C:\\ROOT\\tool\\sed\\sed.exe --ctype=SJIS -f C:\\ROOT\\TEXT_F\\sed_F\\html.sed < $file > $file.tmp"); open IN, "<$file.tmp"; while (my $line = <IN>) { if ( $line =~ m{\<title\>(.*?)\<\ title\>}i ) { # タイトルがあれば $title = $1; last; } } $title .= " : \n\n- $url\n\n"; decode('shiftjis', $title); if ($clipflag) { $clip->Set($title); } else { print ($title); } # urlcopy.pl ends here.