Все, что лучше, чем HTML :: TokeParser, если говорить об интерфейсе. WWW :: Mechanize сияет формами, но в нем также отсутствует декларативный способ поиска определенных элементов. Мне нравятся Web :: Query и HTML :: Query , которые моделировали свой интерфейс после jQuery, что, насколько я знаю, сделало этот вид программирования популярным.
Программа из вопроса короче следующим образом. Он автоматически вызывает исключения, поэтому нет необходимости в явной обработке ошибок.
use URI;
use Web::Query 'wq';
sub get_img_page_urls {
my ($url) = @_;
$Web::Query::UserAgent = LWP::UserAgent->new(agent => 'Mozilla/8.0');
return map {
URI->new($_)->abs('http://example.com')->as_string # hash key
=> 1 # hash value
} wq($url)->find('div.thumb-box div.thumb a')->attr('href');
}
Ранее опубликовано в качестве комментария https://stackoverflow.com/q/8274221#comment-10196381