2011-01-06 53 views
1

我有要求監視瀏覽器中打開的某個網頁(https),在網頁上出現特定字符串時,不斷刷新頁面併發出警報。有什麼辦法可以做到這一點嗎?監視文本的網頁

+1

你想寫一個腳本嗎?如果是這樣,什麼語言? – codersarepeople 2011-01-06 00:40:26

+0

是的,我想寫一個腳本。什麼是最簡單的方法?我不想自動登錄,只想刷新並搜索打開的瀏覽器窗口。 – Dubey 2011-01-06 00:41:48

+0

我們需要關於確切站點和認證類型的更多信息,但curl和grep(或egrep)的組合可能就足夠了。你甚至可以把它包裝在crontab/windows任務中,或者直接把一個控制檯窗口放在它上面。 – kvista 2011-01-06 00:52:44

回答

1

我認爲這可以用下面的一些C#代碼來完成。首先下載網頁,然後檢查下載的網頁是否包含特定的字符串。

有很多教程如何在C#中播放聲音

while(true) 
{ 
string webpage = DownloadWebpage("https://www.example.com"); 
if (webpage.Contains("particular string")) 
{ 

// play warning sound! 
break; // stop checking constantly 
} 
System.Threading.Thread.Sleep(60*1000); // 60 seconds between checking the webpage 
} 

使用此功能來下載網頁

public static string DownloadWebpage(string url) 
{ 
     HttpWebRequest webRequest = (HttpWebRequest)HttpWebRequest.Create(url); 
     //WebRequestObject.UserAgent = ".NET Framework/3.5"; 
     webRequest.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.44 Safari/534.7"; 
     //WebRequestObject.Referer = "http://www.aWebsite.com/"; 


     WebResponse response = webRequest.GetResponse(); 
     Stream responseStream = response.GetResponseStream(); 
     StreamReader reader = new StreamReader(responseStream); 

     string content = reader.ReadToEnd(); 

     reader.Close(); 
     responseStream.Close(); 
     response.Close(); 
     return content; 
    } 
1

什麼操作系統是你嗎?如果你在Unix上,最好爲它創建一個cronjob,這樣你就沒有一個程序不斷地佔用內存。如果您要監控網站幾天甚至幾周,情況尤其如此。

在這種情況下,這樣做會像下面這樣的shell腳本的最簡單的方法:

# Make $DONE an environment variable 
url=... 
your_string=... 
file= 
export url, your_string, file 

if [$DONE]; then 
    exit(1) 
fi 

wget $url > $file 
if [grep $your_string $file]; then 
    $DONE = 1 
fi 

警告: 我的兩個解決方案,以及海報的上方,只是做了對HTML的比賽串。但是,這並不能保證字符串(如果在html中找到)將出現在網頁演示文稿中。也許它存儲在一個JavaScript數組中,並且只在用戶選擇某個選項時纔打印到屏幕上......也許它被註釋掉了......有各種各樣的可能性。在這些情況下,你將不得不做比我或上面的人所建議的更聰明的匹配。