という話が最近ありましたが、こういう話には WWW::Mechanize と Web::Scraper があればほとんどの用はたせるんじゃないかと思います。
use strict; use warnings; use WWW::Mechanize; use Web::Scraper; use Perl6::Say; use Encode; binmode STDOUT => ':utf8'; my $mech = WWW::Mechanize->new; $mech->agent_alias('Mac Mozilla'); $mech->get( URI->new('http://www.youtube.com/') ); $mech->submit_form( form_name => 'searchForm', fields => { search_query => Encode::decode('utf-8', '猫鍋'), }, ); my $result = scraper { process 'div.video-entry', 'movies[]' => scraper { process 'a', 'link' => '@href'; process 'div.video-long-title', 'title' => 'TEXT'; } }->scrape( $mech->response ); for my $entry (@{$result->{movies}}) { say $entry->{link}->as_string; say "\t", $entry->{title}; }
% ./mech.pl | head -6 http://www.youtube.com/watch?v=sJMMOyFqTNg 猫鍋 http://www.youtube.com/watch?v=JJltke9Lgik 猫なべ http://www.youtube.com/watch?v=F7S6vc7BiEk チビスケ一家 猫鍋