WWW::Mechanizeが便利
WWW::Mechanize - Handy web browsing in a Perl object
WWW::Mechanizeがいろいろできて便利。
リンク切れチェックスクリプトを書いてみた。
#!/usr/bin/perl # 引数のページにあるリンク切れをチェック use strict; use warnings; use WWW::Mechanize; my $url = shift; my $mech = WWW::Mechanize->new(); $mech->get($url); push (my @links, $mech->find_all_links()); foreach my $link (@links) { my $reg = $link->url; $mech->follow_link( url_regex => qr/^$reg$/ ); my $status = $mech->status(); if ($status =~ /[1-3][0-9][0-9]/) { print "$reg => link is alive. (Status: $status)\n"; } else { print "$reg => link is dead. (Status: $status)\n"; } $mech->back(); }
SSLサイトにアクセスするのに、Crypt::SSLeayが必要。
#!/usr/bin/perl use strict; use warnings; use WWW::Mechanize; my $ssl_url = "https://mixi.jp/"; my $url = "http://mixi.jp/"; my $mech = WWW::Mechanize->new(); $mech->get("$ssl_url"); $mech->submit_form( fields => { email => '<your email>', password => '<your password>', } ); $mech->get("${url}home.pl"); $mech->get("${url}show_log.pl"); push (my @links, $mech->find_all_links(url_regex => qr/show_friend.pl/)); foreach my $link (@links) { print $link->text . " ($url" . $link->url . ")\n"; }
あと、mech-dumpコマンドでいろいろな情報を取得できる。
フォーム情報
$ mech-dump http://mixi.jp/ POST http://mixi.jp/login.pl [login_form] next_url=/home.pl (hidden readonly) email= (text) password= (password) sticky=<UNDEF> (checkbox) [*<UNDEF>/off|on/次回から自動的にログイン ※パスワードを忘れた方はこちら] <NONAME>=<UNDEF> (image)
リンク情報
$ mech-dump --links --absolute http://mixi.jp/
イメージ情報
$ mech-dump --images --absolute http://mixi.jp/
WWW::Mechanize
mech-dump