2016-01-20 54 views
-2

我正在編寫一個基本腳本來觀察網頁並在發生變化時與它進行交互。調整網頁觀察器的性能

我正在用Perl編寫,使用curl來獲取頁面和grep來觀察它的變化。

手錶結構我使用的是以下

my $string = ''; 
do { 
    $string = curl -s --cookie cookie.txt "http://url.com/resource" | grep "thing_that_has_appeared" 
    } until ($string ne ''); 

它隨後被傳遞到被用來提取信息的字符串。

頁面本身作爲捲曲文件下載時爲16KB。

在網絡帶寬和處理器使用情況下,運行此操作時會看到很大的負載。

關鍵是要儘可能接近,這是在第二個或第二個尺度的一小部分,所以一些合理的負載是可以接受的。我只是想知道我是否會錯誤地做這件事,並且如果有更高效的方式來觀看頁面?

服務器未發出Last-Modified標頭。

有沒有什麼方法可以指示捲曲(或者中斷它)來停止下載頁面,一旦我確認它沒有改變?

我覺得我主要是需要見解。我的太有限了。

編輯:回覆評論我已經包括循環,並指定時間跨度。

+2

curl命令只提取一次網頁。如果您看到*顯着負載*,那麼您必須將此命令封裝在一個不顯示的循環中。請顯示您的其他代碼。你希望用這種方式迴應什麼樣的迴應時間?你可以每天檢查一次嗎?執行此操作的最佳方法是檢查HTTP標頭。你確定改變不會反映在標題中嗎? – Borodin

+0

「有沒有什麼方法可以指導捲曲(或者可能中斷它),以便在確認尚未更改時停止下載頁面?」沒有像Last-Modified這樣的頭文件,除非您下載完整內容,否則無法確認該頁面是否相同。 (如果只有最後一個字節發生了變化呢?) – ThisSuitIsBlackNot

+0

什麼是「thing_that_has_appeared」?這聽起來像是你真的在等待特定的內容而不是簡單的改變 – Borodin

回答

1

ThisSuitIsBlackNot的回答幫助:

隨着LWP :: UserAgent的,你可以指定每N個字節已經被下載後調用回調函數。如果您找到了您要查找的內容,則可以在中途取消該請求。

他還參考了與libwww-perl庫的Web用戶代理相關的metacpan頁面this

謝謝您的輸入。 再一次,如果問這個問題的方式不夠,對不起。