2009-08-10 135 views
9

我們的網站分析軟件包包含有關用戶在頁面中的活動的詳細信息,並且我們在網頁頂部的疊加層中顯示(單擊/滾動/交互)可視化。目前,這是一個包含頁面實時呈現的IFrame。如何截取呈現的HTML頁面的屏幕截圖

由於頁面隨時間而改變,因此舊數據不再對應於頁面的當前佈局。我們希望運行一個蜘蛛來偶爾拍攝頁面的快照,使我們能夠保持與各種版本頁面的交互記錄。

我們有這個(Linux)的工作實現,但快照過程是一個可怕的Python/JavaScript/HTML hack,打開一個Firefox窗口,截圖並滾動和合並並保存到一個文件。這要求我們在我們的正常無頭服務器上安裝X堆棧,並且每頁需要一分鐘。

我們希望在普通網絡瀏覽器中使用性能更接近渲染時間的無頭實現,但沒有找到任何東西。

用Mozilla的源代碼開始構建某些東西是一個動作,但這對我來說似乎有點矯枉過正,如果我們試圖使它保持最新,這對維護人來說也是一場噩夢。

對此提出建議?

+0

我使用[wkhtmltopdf](http://code.google.com/p/wkhtmltopdf/)這一點。它需要一個X服務器,但是Xvfb就足夠了,所以它在技術上是無頭的。 – jrockway 2009-08-10 05:01:31

回答

1

An article on Digital Inspiration朝向CutyCapt分,它是跨平臺的並且使用Webkit渲染引擎以及使用本IE呈現引擎並需要Windows natch的IECapt。使用Firefox的渲染引擎Gecko的首要任務。

但是,我懷疑你將能夠擺脫X.由於CutyCapt需要Qt,因此它需要X或Windows安裝。而且,類似地,IECapt將需要Windows(或者如果你想在Linux下運行它,那麼你需要X)。我懷疑你能找到一個不需要Qt,Gtk,GDI或Cocoa的渲染引擎,因此需要全面安裝顯示庫。

+0

它適用於Xvfb。 – jrockway 2009-08-12 11:35:47

+0

@jrockway:我不確定你的先行詞是什麼,但我想你可能會錯過這一點。這裏的異議並不是需要物理屏幕(事實並非如此),而是更多的是安裝了大量額外的庫,這些庫在僅用於終端服務的機器上支持圖形界面。 – 2009-08-12 20:39:16

0

爲什麼不存儲發送給客戶端的HTML?然後,您可以使用它在Web瀏覽器中重新顯示爲頁面,以顯示它的樣子。

使用你的web使用操作數據,你可以使用它來默認組合框,字段等等,以便客戶端可以使用這些值,甚至可以改變按鈕等的CSS,將它們標記爲被推送。

作爲一個好處,你不需要X堆棧,不需要做任何爬取或存儲圖像。

EDIT(重安德魯·摩爾):

這是你存儲在一個版本號目前的CSS /圖像。在HTML中的評論中放置一個易於解析的版本號。如果更改CSS /圖像並使用現有名稱,請增加發送的HTML輸出中的版本號。

存儲HTML的系統將知道它需要獲取新副本並存儲在新號碼下。重新顯示時,只需使用版本號即可確定要使用哪個CSS /圖像集。


目前,我們這裏有一個系統,該系統採用了非常相似的系統,所以我們可以跟蹤用戶的行爲,並提供更好的支持,當他們撥打我們的幫助臺,因爲他們可以調出用戶會話,並按照他們做了什麼,甚至一些什麼生活。

您甚至可以對其進行編碼,以便在存儲時自動檢查敏感字段。

+0

直到他們改變他們的佈局和他們的CSS /圖像劇烈的那一天起作用。 – 2009-08-10 04:41:27

+0

考慮你的編輯。現在你有解析文件和糾正任何相對/絕對路徑的問題,以便它們正確顯示。圖像路線是最簡單的。 – 2009-08-10 05:06:17

+0

這是正確的,但並不困難。我看不出如何渲染頁面並拍攝圖像,是最簡單的方法。最糟糕的情況是,您可以在每個用戶會話中存儲所有CSS,並確保您是否更改圖像,還可以更改其名稱。或者只要確保首先通過相對路徑使用所有內容,這意味着如果您正確地使用它,則根本不需要更改HTML中的路徑。我們在這裏做了,除了一些最初的數據庫問題,它像一個魅力。 – 2009-08-10 05:22:08

0

根據您的需求的具體情況也許你可以逃脫使用許多免費的網頁縮略圖服務之一?例如,您可以每月產生數千個/不收費的廣告。(沒有使用過,只是使用'免費縮略圖服務')來找到它。

僅有T熱