4.7 KiB
4.7 KiB
title | author | date | url | wordtwit_post_info | categories | |||
---|---|---|---|---|---|---|---|---|
LWPをつかってみる | kazu634 | 2008-09-04 | /2008/09/04/_1095/ |
|
|
Gaucheの方はとりあえず頭の働く土日へ…
相対URLを絶対URLへ
# === Libraries === use strict; use warnings; # LWP module use LWP 5.64; # Character Encoding use Encode; use utf8; binmode(STDERR, ':raw :encoding(utf8)'); my $url = 'http://www.cpan.org/RECENT.html'; # get then content of the url. my $browser = LWP::UserAgent->new; my $response = $browser->get( $url, 'User-Agent' => 'Mozilla/4.77 [en] (Win98; U)', 'Accept' => 'image/gif, image/x-xbitmap, image.jpeg, image.pjpeg, image/png, */*', 'Accept-Encoding' => 'gzip', 'Accept-Language' => 'ja,en', 'Accept-Charset' => 'iso-8859-1, *, utf8', ); die "$url を読み込めませんでした。", $response->status_line unless $response->is_success; die "HTMLを読み込んだはずなのに、", $response->content_type, "が返ってきました。" unless $response-> content_type eq 'text/html'; # decoding. # Note how to use "decode": # decode($content's character code, the target string) my $content = decode('shiftjis', $response->content); # ここで相対URLを絶対URLに変換している while ( $content =~ m/<A HREF=\"(.*?)\"/g ) { print(URI->new_abs( $1, $response->base ), "\n"); }
ここの
while ( $content =~ m/<A HREF=\"(.*?)\"/g ) { print(URI->new_abs( $1, $response->base ), "\n"); }
がポイントだよ。