2013-06-06 76 views
4

所以我一直在這個工作一個月,但我沒有在網上發現任何東西,所以我雖然可能每分鐘檢查網站源代碼的變化,但似乎它的源代碼每秒都在變化,所以在我的編碼中是否有任何問題,或者是否有任何其他方式來監控網站的變化?如何監視網站中的更改?

這裏是我的代碼:

private void Startbtn_Click(object sender, EventArgs e) 
    { 

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.google.com");        
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
StreamReader source = new StreamReader(response.GetResponseStream()); 
richTextBox1.Text = source.ReadToEnd(); 
timer1.Start(); 
timer1.Interval = 60000; 

    } 

private void timer1_Tick(object sender, EventArgs e) 
    { 

     HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.google.com"); 
     HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
     StreamReader source2 = new StreamReader(response.GetResponseStream()); 
     RichTextBox checker = new RichTextBox(); 
     checker.Text = source2.ReadToEnd(); 
     if (richTextBox1.Text == "") 
     { 
      richTextBox1.Text = checker.Text; 

     } 
     else 
     { 


      if (richTextBox1.Text != checker.Text) 
      { 
       MessageBox.Show("somthing changed"); 
       richTextBox1.Text = checker.Text; 
      } 
      else 
      { 
       MessageBox.Show("No changes yet!"); 

      } 
     } 
    } 

回答

0

您已設置計時器的時間間隔5000毫秒,這使得它只有5秒。所以你的代碼將每5秒運行一次。如果您想每分鐘運行計時器,則應將其設置爲1000x60 = 60000 ms。我希望這有幫助。

+0

我知道這些間隔只是一個例子,但是我要改變它以避免關於計時器的進一步問題,重點是它總是會在網站源代碼中找到變化! – Porphan

+0

我明白了。你的意思是每秒都會改變實際的內容。實際上,如果您看到上述請求返回的響應,則會有大量數據,並且每個請求都會發生變化。據我瞭解,實際上,每一個請求和迴應都是獨一無二的。因此,通過這種方式,您的每一個請求都將是獨一無二的。重點是,您需要澄清您確切想要比較的部分,然後從響應中過濾該部分,然後對其進行比較。但爲此,您首先必須詳細瞭解「Respose」並查看每個請求的具體變化。 –

1

首先我建議有一個網頁的實際內容比較存儲的版本,當你:

  1. 比較你對存儲的新的(而不是內容的哈希MD5哈希每次)
  2. 請記住,有中,你可能不視爲頁面內容改變頁面變化的元素...

某些服務器會返回一個Last-Modified頭,你可以用做一個比較,我猜。