日期:2014-05-16  浏览次数:21191 次

C#模拟点击网页,等待网页加载完成再执行代码的问题
大概情况是这样的
winform里面有个webbrowser控件,指向一个网页,比如论坛网页
当我抓取完第一页数据的时候我要抓取第二页,我用的是模拟点击的方法加载下一页
HtmlDocument doca = this.webBrowser1.Document;  
            for (int i = 0; i < doca.All.Count; i++)          //循环查找这个对象的每一个元素
            {
                if (doca.All[i].TagName == "A")           //如果这个元素是A
                {
                    HtmlElement myelement = doca.All[i];       //就把这个元素实例化成一个HtmlElement对象
                    if (myelement.OuterText == "下一页")       //如果这个元素的文字是“下一页"
                    {
                             this.webBrowser1.Document.All[i].InvokeMember("click");
                    }
                }
            }
现在问题是我不知道怎么等webbrower加载完成下一页再执行抓取操作,总是webbrower还没加载完就往下执行了,
我用while (this.webBrowser1.ReadyState != WebBrowserReadyState.Complete)
                Application.DoEvents();
让webbrower第一次加载首页的时候没问题,但是用上面方法再加载下一页就不行了,哪位大侠能教教我

------解决方案--------------------
引用:
Quote: 引用:

wb.ReadyState == WebBrowserReadyState.Complete


这个没用啊,模拟点击之后,webbrowser的状态一直是complete


ajax没不需要wb啊,wb并没有方便点,反而处理麻烦,用http不是更好吗。