Grab url image from.asp et enregistrer
-
26-10-2019 - |
Question
Je suis en train de saisir l'image située ici et l'enregistrer en plusieurs fois mon serveur par jour, comme si je « clic droit » sur l'image et l'enregistrer sur mon bureau. J'ai décidé d'utiliser un script Perl pour ce faire, voici ce que je l'ai écrit à ce jour:
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;
Après avoir exécuté via ssh je reçois cette erreur: peut appeler la méthode "regexp" sur une valeur non définie à la ligne 2
Quelqu'un a une idée qui ne va pas avec cette ligne "$ Pic-> regexp ( '* png..');" ou comment saisir et enregistrer cette image (index_chart_api.png) d'URL mentionnée sur les serveur correctement?
apprécierais toute aide à ce sujet.
La solution
Notez que l'URL a donné montre l'image PNG dans mon navigateur signifie qu'il n'y a pas de HTML pour rechercher l'image. En principe, donc, le script suivant devrait fonctionner:
#!/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";
}
J'ai utilisé un script similaire pour produire Norwegian Sun dans la mer Baltique - 6 jours en 5 minutes .
Autres conseils
Vous n'avez pas initialiser l'objet, c'est pourquoi il est indéfini.
use Image::Grab;
$pic = new Image::Grab;
$pic->regexp('.*\.png');
ou une chose similaire:
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;