2013-07-14 2 views
0

Я разбираю веб-сайт с WWW :: Механизируйте загрузку некоторых изображений. Мне нужно заполнить массив всеми ссылками, связанными с разрешениями, доступными для данного изображения. Но мне нужно заполнить только ссылками, которые равны или меньше «1440x900», но я не уверен, где это сделать. Я пытался это:Разбор ссылок с Perl regex

my @resolutions = map {$_->url} grep {$_->url =~ /$_[0]-\d{4,4}x\d{3,4}/} $mech->find_all_links(); 

Как я могу сделать, что проверка только получить изображения равна или меньше, чем «1440x900»?

tnx заранее!

Edit:

Я не могу использовать find_all_images метода меха, потому что они заканчиваются на .html. Например, ссылки таковы:

http://www.wallpaper.com/view/some_image-2560x1600.html 

сразу после этого ссылки, что у вас есть изображение .jpg.

+0

Все названия изображений, обозначаемые по их разрешению последовательно? Если да, то я просмотрю метод изображений WWW :: Mechanize, который автоматически собирает все ссылки на изображение на странице, а затем извлекает две части информации, которые вам нужны, с регулярным выражением и, наконец, выталкивает URL-адрес массиву, если он подходит вашему условия ... (Если вы предоставите немного больше информации и захотите, я тоже смогу написать код) –

+0

Пожалуйста, покажите, как должна выглядеть ссылка-ссылка (html-код). – gangabass

+0

Когда вы установили 'WWW :: Mechanize', вы также установили' HTML :: TreeBuilder' и 'HTML :: Element' http://metacpan.org/module/HTML::Element. С его помощью вы можете' look_down() 'найти ссылки и' right() ', чтобы найти своего родного брата. – shawnhcorey

ответ

2
use 5.014; 
for my $link ($mech->find_all_links(url_abs_regex => qr/\d+x\d+\.html$/a)) { 
    my ($w, $h) = $link->url =~ /(\d+)x(\d+)/a; 
    if ($w <= 1440 && $h <= 900) { 
     # do something 
    } 
} 
+0

Большое спасибо за ваше время. Ты сделал это! – XVirtusX

+0

только одно ... как Perl может определить, какое значение должно быть присвоено $ w и $ h в этом регулярном выражении? – XVirtusX

+0

@XVirtusX: выражение «$ link-> url = ~/(\ d +) x (\ d +)/a" возвращает список, содержащий значения, которые были сопоставлены заключенными в скобки выражениями. – zgpmax