使用Perl从动态网站上抓取完整的img src

时间:2016-06-07 15:41:40

标签: perl web-scraping dynamic-content

我正在使用Perl Web :: Scraper模块从Zazzle产品页面获取img src,这是API调用的结果。

如果我使用网络浏览器查看页面源,则图像具有完整路径(从?开始)。当我使用Perl脚本检索HTML时(我也尝试过File :: Fetch),我只能使用“.jpg”。

浏览器页面源生成此img src:

http://rlv.zcache.com/coat_of_arms_t_shirt-rb35fa7573d9448a4aeed82f56d98c523_j2nhl_512.jpg?t_supporters_iid=18c7f0d0-5bf8-4aa5-b6b8-5151099cc0ad

Perl脚本检索此img src:

http://rlv.zcache.com/coat_of_arms_t_shirt-rb35fa7573d9448a4aeed82f56d98c523_j2nhl_512.jpg

是否可以使用Perl脚本从此类网站检索完整的src?

这是Perl脚本:

#!/usr/bin/perl

use URI;
use Web::Scraper;

my $api_call = "http://www.zazzle.com/api/create/at-238543087866915480?rf=238543087866915480&ax=linkover&pd=235262722863405468&fwd=productpage&ed=true&supporters=http%3A%2F%2Fcoadb-dev.com%2Fwp-content%2Fprocessed_images%2Firvine%2Ffull_size%2Firvine-arms-1.png";

my $image_scraper = scraper {

    process ".ZazzleWidgetsSppMainView-realviewCrop", "images[]" => scraper {

        process "img", src => '@src';

    };
};

my $res = $image_scraper->scrape(URI->new($api_call));

for my $img (@{$res->{images}}) {

    print $img->{src}  . "\n";

}

1 个答案:

答案 0 :(得分:0)

我的解决方案是使用WWW :: Scripter :: Plugin :: JavaScript(以及用于处理返回内容的Web :: Scraper)安装WWW :: Scripter。

上述插件能够从Javascript访问动态生成的内容。不需要额外的模块。

谢谢!