2008-09-23 86 views
7

我一直在玩弄一個問題是一個服務,它需要我的服務器產生給定網址的網頁截圖。問題是我沒有任何想法,我會如何做到這一點。我主要使用LAMP軟件堆棧,因此所提供的答案是最有幫助的。基本的要求是:給定一個url,服務器需要在該url產生一個渲染網頁的圖像文件。提前致謝!服務器生成的網頁截圖?

+1

不用擔心traumaPony,我的web服務無關與彈出該鼠標懸停在鏈接,當你想讀的文章:) – 2008-09-23 04:37:42

回答

2

實際上,您需要讓服務器啓動相關Web瀏覽器,並使用相應的庫對應用程序進行截圖。 Apache不會爲你呈現頁面,所以你必須有軟件。

+0

右圖像。我有幾個想法是實際上從桌面環境自動收集屏幕截圖,或者以某種方式使用壁虎引擎來構建可以從中創建圖像的頁面的渲染版本。嗯.... – 2008-09-23 04:35:00

2

是的,那是需要的。我在asp.net中這樣做,實際上我創建了一個可在.Net框架類庫中生成的WebBrowser對象來生成屏幕截圖。

6

您可能還想看看webkit,它被稱爲更易於嵌入(用於Adobe AIR,Google for Chrome,Apple for iPhone ...),然後是其他渲染引擎。這可能需要更多的工作來設置,但它比一些啓動了瀏覽器並截圖的黑客更加穩定。

+0

我喜歡你的想法 – 2008-09-23 04:53:32

+3

現在有[PhantomJS](http://www.phantomjs.org/),一個無頭WebKit。 – jholster 2012-03-04 11:04:08

+0

@jholster感謝您的評論! PhantomJS看起來和我一直在尋找的一樣! – ahans 2012-05-31 16:18:01

6

IF您的服務器是的Mac,那麼我建議webkit2png,這是一個很短的Python程序,充分利用WebKit的Objective-C的API來呈現一個URL。就我個人而言,我將它與WWW::Mechanize結合使用來瀏覽我的開發網站並製作每個頁面的屏幕截圖 - 對於測試功能,顯示客戶端和保持屏幕截圖處於最新狀態非常有用。由此產生的截圖是完美的,但有時很長,滾動頁面。

IF您的服務器具有非裸機安裝的Linux發行版與KDE,那麼你可以嘗試khtml2png。我自己沒有嘗試過,但在webkit2png頁面上看到它提到。

2

我使用http://webthumb.bluga.net服務來生成縮略圖。強大,功能強大,易於使用,價格合理。我有一個使用這項服務的高流量生產網站,它工作得很好。鑑於創建一個強大的網頁截圖服務的困難,很高興有其他人做了艱苦的工作。

0

Java的非免費解決方案是WebRenderer。有趣的功能:它可以在渲染時模擬Safari,IE或Firefox瀏覽器。他們有桌面版本和無頭服務器版本。他們還有示例代碼,演示如何呈現網頁的屏幕截圖。

0

虛擬幀緩存的X服務器

我寧願建議XVFB(虛擬幀緩存的X服務器)可以採取無頭服務器的截屏的最佳解決方案。虛擬幀緩衝區X服務器xvfb提供了一個X服務器,可以在沒有顯示硬件且沒有物理輸入設備的計算機上運行。 我在我的服務器上使用它來測試URL並截取它。我們正在使用Ubuntu & XVFB + FIREFOX。它工作正常。根據你的需要修改。看看這些文章。這可能會對你有用。

http://www.semicomplete.com/blog/geekery/xvfb-firefox.html

http://linux.about.com/cs/linux101/g/xvfb.htm

http://www.xfree86.org/4.0.1/Xvfb.1.html

3

PhantomJS是無頭(命令行)基於WebKit的瀏覽器,可以很容易地scripted保存網頁的屏幕截圖。