5

所以我已经为此工作了一个月,但我在网上一无所获,所以我认为可能每分钟检查一次网站源代码的变化,但似乎它的源代码每秒都在变化,所以有没有我的编码有问题还是有其他方法可以监控网站的变化?

这是我的代码:

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!");

            }
        }
    }
4

2 回答 2

1

首先,我建议当必须将页面的实际内容与存储的版本进行比较时:

  1. 将您存储的 MD5 散列与新的散列进行比较(而不是每次的内容)
  2. 请记住,页面中有一些变化的元素,您可能不会将其视为页面内容的变化......

有些服务器会返回一个Last-Modified标题,我猜你可以用它来进行比较。

于 2013-06-06T07:30:12.987 回答
0

您已将计时器间隔设置为 5000 毫秒,这使其仅为 5 秒。因此,您的代码将每 5 秒运行一次。如果您想每分钟运行一次计时器,则应将其设置为 1000x60=60000 毫秒。我希望这有帮助。

于 2013-06-06T07:27:26.427 回答