是否可以在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的網頁截圖?
- 3. 如何使用VBA截取網頁截圖?
- 4. 如何使用PHP截取外部網頁的iFrame的截圖?
- 5. 如何抓取網站並截取每個網頁的截圖?
- 6. Phantomjs - 截取網頁的屏幕截圖
- 7. 如何從asp.net中的網頁表單截取網址截圖?
- 8. 如何截取網站的截圖
- 9. 如何使用Python截取網站截圖/圖像?
- 10. 獲取網頁截圖
- 11. 如何在運行javascript後截取網頁的屏幕截圖
- 12. 如何截取網頁帶有.NET的截圖?
- 13. 如何截取android截圖
- 14. 阻止用戶截取網頁截圖的方法有哪些?
- 15. 如何使用Selenium和java獲取完整網頁的截圖?
- 16. 如何使用javascript或jquery獲取網頁的截圖?
- 17. 如何確保使用Perl的Imager :: Screenshot截取特定窗口的截圖?
- 18. webdriverio - 截取整頁的屏幕截圖
- 19. 如何截取整個網頁?
- 20. 使用java拍攝網頁截圖
- 21. 如何在php中截圖網頁?
- 22. Python獲取網頁截圖調色板
- 23. 從網頁抓取屏幕截圖
- 24. 如何截取部分UIView的截圖?
- 25. 如何截取HTML表單的截圖?
- 26. Android cocos2d如何截取CCscene的截圖?
- 27. 如何截取特定LinearLayout的截圖?
- 28. 如何截取Flex Spark VideoDisplay的截圖?
- 29. 如何截取當前的MapView截圖?
- 30. 如何使用java在網上截圖?
這很難,Perl無法渲染一個網頁來保存屏幕截圖。 – 2010-02-22 17:48:46
Python或任何其他腳本語言? – fixxxer 2010-02-22 17:54:11
@Murali:這並不意味着你不能使用Perl。看到我的帖子下面。 – Zaid 2010-02-22 18:50:57