WWW::Mechanizeでリダイレクト先URL取得
スポンサードリンク
WWW::Mechanizeしている途中で、リダイレクト先のURLを得たいと思って、
use strict;
use warnings;
use WWW::Mechanize;
my $mech = WWW::Mechanize->new();
$mech->agent_alias( 'Windows IE 6');
my $url = 'http://example.com/hoge/';
my $redirected = _get_redirect_url( $url );
print "Location: $redirected\n" if $redirected;
exit;
sub _get_redirect_url {
my $url = shift;
$mech->get($url);
my $newurl = $mech->uri();
$mech->back();
return $newurl;
}
__END__
上記のようなコードを書いたのだけれども、リダイレクト先が404を返すとエラーになる。よって、mechに入っているLWP::UserAgentを使用して、
use strict;
use warnings;
use WWW::Mechanize;
my $mech = WWW::Mechanize->new();
$mech->agent_alias( 'Windows IE 6');
my $url = 'http://example.com/hoge/';
my $redirected = _get_redirect_url( $url );
print "Location: $redirected\n" if $redirected;
exit;
sub _get_redirect_url {
my $url = shift;
my $r = new HTTP::Request( HEAD => $url );
my $h = $mech->simple_request( $r );
my $s = $h->code();
if ( $s == 301 || $s == 302 ) {
print "$s\n";
return $h->header('Location');
}
return;
}
__END__
こんな感じにしてみた。
いつ使うんだこれ。
スポンサードリンク
トラックバック(0)
トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/3550





![: Amazon.co.jp: プラスティック・メモリーズ 1【完全生産限定版】(イベントチケット優先販売申込券付) [Blu-ray]](/lists/_9/B00VWX66E8.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 2【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX66K2.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 3【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX6MV0.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 4【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX66IO.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 5【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX6Y0E.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 6【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX69D6.jpg)


コメントする