使用 Perl 从动态网站抓取完整的 img src
web scraping full img src from dynamic website using Perl
我正在使用 Perl Web::Scraper 模块从 Zazzle 产品页面获取 img src,这是 API 调用的结果。
如果我使用网络浏览器查看页面源代码,图像具有完整路径(从 ? 开始)。当我使用 Perl 脚本检索 HTML 时(我也尝试过 File::Fetch),我只得到“.jpg”。
浏览器页面源生成此 img src:
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";
}
我的解决方案是安装 WWW::Scripter 和 WWW::Scripter::Plugin::JavaScript(以及 Web::Scraper 用于处理返回的内容)。
上述插件能够从 Javascript 访问动态生成的内容。不需要额外的模块。
谢谢!
我正在使用 Perl Web::Scraper 模块从 Zazzle 产品页面获取 img src,这是 API 调用的结果。
如果我使用网络浏览器查看页面源代码,图像具有完整路径(从 ? 开始)。当我使用 Perl 脚本检索 HTML 时(我也尝试过 File::Fetch),我只得到“.jpg”。
浏览器页面源生成此 img src:
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";
}
我的解决方案是安装 WWW::Scripter 和 WWW::Scripter::Plugin::JavaScript(以及 Web::Scraper 用于处理返回的内容)。
上述插件能够从 Javascript 访问动态生成的内容。不需要额外的模块。
谢谢!