2016-11-11 2 views
0

Я пытаюсь загрузить данные о выражении для последовательностей ДНК. На странице график (png-изображение) всегда является 6-м, 7-м или 8-м изображением на странице, но я не хочу скачивать 2 дополнительных изображения каждый раз.WWW :: Mechanize: Загрузить определенное изображение

Осмотр изображения на странице дает <img src="../trash/hgc/gtexGene_genome_6d0b_5d5220.png" border="1">, хотя эти последние несколько цифр в ссылке на изображение меняются каждый раз.

В моем коде, я

my $image = $mech1->find_image(alt_regex => qr/gtexGene/i);; 
$mech1->get($image -> URI); 
$mech1->save_content("exp.png"); 

, который не работает.

Как загрузить изображение, учитывая только то, что содержит часть его ссылки?

+2

Что означает «не работает»? Как именно он не работает? Что он делает, чего вы не ожидаете от этого? –

+0

Обратите внимание, что у вас, кажется, есть два объекта: '$ mech1' и' $ mech'. Может быть, вы их смутили? –

+0

Упс! Я сделал опечатку, набрав код. Извините! Я ожидаю, что он загрузит изображение на странице с помощью «gtexGene» в своей ссылке –

ответ

3

Вы используете alt_regex, который выполняет сопоставление с шаблоном по атрибуту alt. Вам нужен атрибут src, поэтому вам нужно to use url_regex instead.

url => 'string', и url_regex => qr/regex/,

Соответствует URL изображения от строки или регулярного выражения, в зависимости от обстоятельств. URL-адрес может быть относительным URL-адресом, например foo/bar.html, в зависимости от того, как он закодирован на странице.

Таким образом, ваш код должен читаться следующим образом.

my $image = $mech->find_image(url_regex => qr/gtexGene/i); 

использовать только /i модификатор прецедентного нечувствительности, если вы действительно хотите, чтобы быть нечувствительным к регистру.

Смежные вопросы