从网站缩放功能刮取大图像

时间:2014-01-16 10:28:50

标签: html image perl web-scraping image-scaling

我有一个问题,我希望有人能够提供帮助...

我需要从网站上为客户搜索图像和/或图像的网址。 我有一个网址列表,带您进入包含产品图片,产品说明等的特定产品页面(如下所示)。

我的示例网址列表(使用Firebox的网站纯粹是因​​为它有我的问题的一个很好的例子) http://www.firebox.com/product/6078/Back-To-The-Future-iPad-Case?via=hp&s=1x1&t=livefeed http://www.firebox.com/product/5773/Scientific-Spice-Rack?via=hp&s=1x1&t=random http://www.firebox.com/product/6147/Rice-Cube?via=related

我遇到的问题:

如果您访问其中一个网址,则可以看到该网站显示了许多产品图片。

如果您再单击其中一个图像,则会显示较大版本的图像。 当您单击缩放图像而不是当您转到产品页面时最初显示的较小图像(通常约250 x 250)时,会显示我需要的较大尺寸图像(通常约为980 x 980)。

enter image description here

客户需要更大尺寸图片的原因是因为他在自己的网站上显示的大图像会自动缩放到1200 x 1200,而如果它们的尺寸不是这么大则会使用较小的图像使图像看起来模糊/像素化。

我如何从网站获取这些较大尺寸的图像而不是较小的图像?

我已经研究了使用Perl(我知道这个)的可能方法,例如Selenium,但是看不到可以实际获得更大尺寸图像的方法。

这对我来说是个新话题,所以任何有关这方面的帮助和建议都会非常感激,

提前多多感谢。

1 个答案:

答案 0 :(得分:3)

问题只是从页面的HTML源提取大图像的链接。 如果您查看http://www.firebox.com/product/5773/Scientific-Spice-Rack?via=hp&s=1x1&t=random的HTML源代码,您实际上可以看到指向大图片的链接,请参阅下面的HTML部分:

<img class="extra_thumb" data-item="0"   data-sku="sku14014"  data-zoom-image="http://media.firebox.com/pic/p5773_column_grid_12.jpg" data-caption="" data-image="http://media.firebox.com/pic/p5773_column_grid_6.jpg"  src="http://media.firebox.com/pic/p5773_column_grid_1.jpg"/>

您可以在data-zoom-imagedata-image中看到指向大图片的链接,所以这一切都与使用正则表达式提取它有关。您可以使用Perl,Python或许多其他语言。 这是一个简短的Perl示例:

#!/usr/bin/perl                                                                                                                                                                                                                                                               
use strict;
use warnings;
use LWP::Simple;
use feature 'say';
use List::MoreUtils qw( uniq );

my $content = get('http://www.firebox.com/product/5773/Scientific-Spice-Rack?via=hp&s=1x1&t=random');
die "Couldn't get it!" unless defined $content;

my (@big_images) = $content =~ /data-zoom-image\=\"([^\"]+?)\"/g;
say for uniq @big_images;

以上印刷品:

http://media.firebox.com/pic/p5773_column_grid_12.jpg
http://media.firebox.com/pic/p5773_extra1_column_grid_12.jpg
http://media.firebox.com/pic/p5773_extra2_column_grid_12.jpg
http://media.firebox.com/pic/p5773_s14019_column_grid_12.jpg
http://media.firebox.com/pic/p5773_s14014_column_grid_12.jpg