从.asp网址抓取图片并保存

时间:2011-10-18 23:07:54

标签: perl imagedownload

我正在尝试抓取位于 here 的图片,并将其每天保存在我的服务器中几次,就好像我在图像上“右键单击”并保存它一样在我的桌面上。我已决定使用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运行后我收到此错误:无法在第2行的未定义值上调用方法“regexp”

任何人都知道这行有什么问题“$ pic-> regexp('。*。png');”或者如何正确地从一个服务器上提到的URL中获取并保存这个图像(index_chart_api.png)?

感谢您的任何帮助。

2 个答案:

答案 0 :(得分:0)

你没有初始化对象,这就是未定义的原因。

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;

答案 1 :(得分:0)

请注意,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";
}

我使用了类似的脚本来生成Norwegian Sun in the Baltic Sea - 6 days in 5 minutes