是否可以在Perl中編寫腳本來打開不同的URL並保存每個腳本的屏幕截圖?如何使用Perl截取網頁截圖?
回答
您可以使用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();</code></pre>
我爲PerlTricks寫了這個模塊:[從Perl控制Firefox](http:// perltricks。com/article/138/2014/12/8/Controlling-Firefox-from-Perl) – 2015-10-27 18:07:23
你也可以使用Win32::IE::Mechanize渲染使用IE的網頁,然後Win32::Screenshot捕捉頁面。您可能需要做一些工作來確定截圖的位置,但這不應該太難。
這將是Windows平臺唯一的解決方案,當然,但可能就足夠了。
看起來像Win32 :: IE :: Mechanize不再與Activestate和/或Windows 7一起工作:https://rt.cpan。 org/Public/Dist/Display.html?Name = Win32-IE-Mechanize,但看起來它仍然有效http://search.cpan.org/dist/Win32-IEAutomation-0.5/lib/Win32/IEAutomation.pm – 2012-08-01 03:04:23
使用WWW::Selenium
模塊,爲此您需要啓動並運行Selenium Remote Control會話。
capture_entire_page_screenshot()
方法應該啓動並運行。
從WWW::Selenium上CPAN:
$sel->capture_entire_page_screenshot($filename, $kwargs)
將當前窗口畫布PNG文件的全部內容......
一個典型的腳本:
use strict;
use warnings;
use WWW::Selenium;
my $sel = WWW::Selenium->new(host => "localhost",
port => 4444,
browser => "*iexplore",
browser_url => "http://www.google.com",
);
$sel->start;
$sel->open("http://www.google.com");
$sel->capture_entire_page_screenshot("screenshot.png");
$sel->close;
另一種不需要使用瀏覽器的方法是使用ImageMagick和HTML2PS來轉換圖像。不過要注意的是,這不是微不足道的,而且幾乎不可能(最後我嘗試過)在Windows上正常工作。
一旦安裝了ImageMagick,最簡單的方法就是對ImageMagick安裝的convert
程序運行系統調用。如果你想要一個不太冒犯的方法,你可以使用API。
關於此方法,您可以在PerlMonks上找到極好的討論。
使用第三方Web服務API,如http://webshotspro.com/(屏幕截圖)或http://www.thumbalizr.com/(縮略圖)。
- 1. 用JavaScript截取網頁截圖?
- 2. 如何使用PHP截取外部網頁的iFrame的截圖?
- 3. 如何截取使用php的網頁截圖?
- 4. 如何抓取網站並截取每個網頁的截圖?
- 5. 如何截取網站的截圖
- 6. 如何使用Python截取網站截圖/圖像?
- 7. 如何截取網頁帶有.NET的截圖?
- 8. 如何在運行javascript後截取網頁的屏幕截圖
- 9. 如何截取android截圖
- 10. 使用java拍攝網頁截圖
- 11. 如何在php中截圖網頁?
- 12. Python獲取網頁截圖調色板
- 13. 如何截取Flex Spark VideoDisplay的截圖?
- 14. Android cocos2d如何截取CCscene的截圖?
- 15. 如何截取HTML表單的截圖?
- 16. 如何截取特定LinearLayout的截圖?
- 17. 如何使用java在網上截圖?
- 18. 如何使用R截圖網站?
- 19. 如何使用golang截圖網站?
- 20. 使用REST API截取OneNote頁面的截圖
- 21. 如何從網址獲取網頁的屏幕截圖
- 22. 如何截取指定網站的截圖?
- 23. 如何截取呈現的HTML頁面的屏幕截圖
- 24. 如何使用PHP截取當前窗口的截圖?
- 25. 獲取頁面的截圖
- 26. iOS截取tableview的截圖
- 27. 截取屏幕截圖
- 28. C++截取屏幕截圖
- 29. 截取iFrame的截圖
- 30. 如何使用wkhtmltopdf進行網頁截圖?
這很難,Perl無法渲染一個網頁來保存屏幕截圖。 – 2010-02-22 17:48:46
Python或任何其他腳本語言? – fixxxer 2010-02-22 17:54:11
@Murali:這並不意味着你不能使用Perl。看到我的帖子下面。 – Zaid 2010-02-22 18:50:57