Возьмите изображение с URL.asp и сохранить его
-
26-10-2019 - |
Вопрос
Я пытаюсь схватить изображение, расположенное здесь И сохраняйте его на моем сервере несколько раз в день, как будто я «щелкните правой кнопкой мыши» на изображении и сохраняю его на моем рабочем столе. Я решил использовать сценарий Perl для этого, вот что я написал до сих пор:
use Image::Grab;
$pic->regexp('.*\.png');
$pic->search_url('http://www.reuters.wallst.com/enhancements/chartapi/index_chart_api.asp?symbol=.SPX&headerType=quote&width=316&height=106&duration=3');
$pic->grab;
open(IMAGE, ">index_chart_api.png") || die"index_chart_api.png: $!";
binmode IMAGE; # for MSDOS derivations.
print IMAGE $pic->image;
close IMAGE;
После запуска через SSH я получаю эту ошибку: Не могу вызовать метод «regexp» на неопределенном значении в строке 2
У кого-нибудь есть идеи, что не так с этой строкой "$ pic-> regexp ('.*. Png');" Или как получить и сохранить это изображение (index_chart_api.png) от упомянутого URL -адреса на одном сервере?
Цените любую помощь с этим.
Решение
Обратите внимание, что данный URL показывает изображение PNG в моем браузере, что означает, что нет HTML для поиска изображения. В принципе, тогда должен работать следующий сценарий:
#!/usr/bin/env perl
use warnings; use strict;
use LWP::Simple qw(getstore is_error);
my $img_url = 'http://www.reuters.wallst.com/enhancements/chartapi/index_chart_api.asp?symbol=.SPX&headerType=quote&width=316&height=106&duration=3';
my $ret = getstore($img_url, 'test.png');
if (is_error($ret)) {
die "Error: $ret\n";
}
Я использовал аналогичный сценарий для производства Норвежское солнце в Балтийском море - 6 дней за 5 минут.
Другие советы
Вы не инициировали объект, поэтому он не определен.
use Image::Grab;
$pic = new Image::Grab;
$pic->regexp('.*\.png');
или похожа:
use Image::Grab;
$pic = Image::Grab->new(
SEARCH_URL => '',
REGEXP => '.*\.png');
$pic->grab;
open(IMAGE, ">image.jpg") || die "image.jpg: $!";
binmode IMAGE;
print IMAGE $pic->image;
close IMAGE;