是否可以用Perl编写一个脚本,打开不同的URL并保存每个URL的屏幕截图?
发布于 2010-02-23 02:14:29
您可以使用WWW::Mechanize::Firefox控制Firefox实例,并使用$mech->content_as_png
转储呈现的页面。
但请注意,设置它可能会带来相当大的挑战。
如果一切正常,你可以简单地使用这样的脚本来转储所需网站的图像,但你应该启动Firefox并手动将其调整为所需的宽度(高度无关紧要,WWW::Mechanize::Firefox总是转储整个页面)。
use WWW::Mechanize::Firefox;
use Path::Class qw/file/;
my $mech = WWW::Mechanize::Firefox->new(
bufsize => 10_000_000, # PNGs might become huge
);
$mech->get('http://www.stackoverflow.com/');
my $fh = file( 'test.png' )->open( '> :raw' );
print $fh $mech->content_as_png();
发布于 2010-02-23 03:02:09
另一种不需要使用浏览器的方法是使用ImageMagick和HTML2PS来转换图像。但是请注意,这不是微不足道的,它几乎不可能(上次我尝试)让它在Windows上正常工作。
一旦安装了ImageMagick,最简单的方法就是对ImageMagick安装的convert
程序运行系统调用。如果您想要一种不那么黑客的方法,您可以使用PerlMagick ImageMagick应用编程接口。
你可以在PerlMonks上找到关于这种方法的精彩讨论。
发布于 2010-02-23 02:48:53
您还可以使用IE使用Win32::IE::Mechanize呈现web页面,然后使用Win32::Screenshot捕获该页面。您可能需要做一些工作来弄清楚在哪里拍摄屏幕截图,但这应该不是太难。
当然,这将是一个纯Windows平台的解决方案,但可能已经足够了。
https://stackoverflow.com/questions/2312852
复制相似问题