我有兴趣检查网站的内容,内容经常变化,当我在任何浏览器上查看网站时,它每 30 秒刷新一次。我想知道内容何时发生了变化。
我正在使用winforms,我只想每30秒单击一个按钮来启动一个循环。我不想太频繁地访问网站,事实上网页本身的刷新已经足够满足我的需要了。
我的代码在我单击按钮 (btnCheckWebsite) 时有效,如果我稍等片刻然后再次单击 btnCheckWebsite,我的消息框会弹出,因为网页已更改。这很好,但是我想在 while 循环中执行此操作。当我取消注释我的 while 循环时, DocumentText 永远不会改变。我已经对其进行了调试,由于某种原因,它每次都是相同的文本,即使网页在现实世界中发生了变化,它在我的代码中也保持不变。
所以我的问题是为什么我不能使用循环,我可以做些什么来重复运行它而不需要我的任何输入?
作为奖励,我想删除我添加的 .Refresh() ,因为没有它它就无法工作,但是据我所知,这会刷新整个页面。当我使用浏览器时,即使我没有刷新整个页面,我也会看到页面更新。
仅作为背景信息,我确实首先在我的表单上有一个 WebBrowser 控件,页面会自动刷新。我使用了相同的代码并且遇到了同样的问题,有趣的是,我的 Windows 窗体上的 WebBrowser 控件自行刷新没问题,直到我单击 btnCheckWebsite 然后它停止刷新!我也知道 webrequest,但我不知道如何将它用于我的目的。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace Check_Website
{
public partial class Form1 : Form
{
public WebBrowser _memoryWebBrowser = new WebBrowser();
String _previousSource = "emptySource";
public Form1()
{
InitializeComponent();
_memoryWebBrowser.Navigate(new Uri("http://www.randomurl.com/"));
}
private void btnCheckWebsite_Click(object sender, EventArgs e)
{
//I want to un-comment this while loop and let my code run itself but it stops working
//when I introduce my while loop.
//while (1 < 2 )
//{
//Thread.Sleep(30000);
checkWebsite();
//}
}
private void checkWebsite()
{
//Why do I need this refresh? I would rather not have to hit the web page with a refresh.
//When I view the webpage it refreshed with new data however when I use a WebBrowser
//the refresh just doesn't happen unless I call Refresh.
_memoryWebBrowser.Refresh();
Thread.Sleep(500);
while (((_memoryWebBrowser.ReadyState != WebBrowserReadyState.Complete) || (_memoryWebBrowser.DocumentText.Length < 3000)))
{
Thread.Sleep(1000);
}
String source = _memoryWebBrowser.DocumentText;
if ((source != _previousSource) && (_previousSource != "emptySource"))
{
//Hey take a look at the interesting new stuff on this web page!!
MessageBox.Show("Great news, there's new stuff on this web page www.randomurl.co.uk!!" );
}
_previousSource = source;
}
}
}