首页 新闻 会员 周边

利用webbrowser实现网络爬虫的一个问题

0
[已解决问题] 解决于 2010-10-28 19:14

程序机制:

在webbrowser.documentcompleted函数中进行解析当前网页,并且翻页。

相关代码如上图所示,

发现的问题如下:我在断点单步调试的过程中发现btnNextPage_click一直反黑

btnNextPage按钮中主要是定位当前页的下一页链接并进行翻页,

翻页的方法是:

mshtml.IHTMLElement anchor = (mshtml.IHTMLElement) htmlElemNext.DomElement;
                    anchor.click();
                                        while (webBrowser1.IsBusy) System.Threading.Thread.Sleep(500);

 

其中htmlElemNext是用DOM定位的下一页链接,出现的问题是:

一个页面被解析,插入数据库两次

急求牛人帮我解答下上面的两个问题!

finallyly的主页 finallyly | 初学一级 | 园豆:100
提问于:2010-10-28 11:51
< >
分享
最佳答案
0

可以参考一下,我以前写过的:

private void AxWebBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            if (AxWebBrowser1.ReadyState != WebBrowserReadyState.Complete)  //触发类别 判断
                return;
            if (e.Url.ToString() != AxWebBrowser1.Url.ToString())           //子页面 url判断
                return;

            this.labStatus.Text = "就绪";
            this.cobURL.Text = this.AxWebBrowser1.Document.Url.ToString();
            this.TabText = this.AxWebBrowser1.DocumentTitle;

            //HtmlDocument hd = AxWebBrowser1.Document;
            //HtmlElement he = hd.GetElementById("kw");
            //he.InnerText = "net";
            //HtmlElement bt = hd.GetElementById("sb");
            //bt.InvokeMember("click");
           
            //////////              btnG
            HtmlDocument hd = AxWebBrowser1.Document;
            HtmlElement he = hd.GetElementsByTagName("input").GetElementsByName("q")[0];
            he.InnerText = "net";
            HtmlElement bt = hd.GetElementsByTagName("input").GetElementsByName("btnG")[0];
            bt.InvokeMember("click");


            //注销事件,防再次请求提交问题
            AxWebBrowser1.DocumentCompleted -= new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(this.AxWebBrowser1_DocumentCompleted);
        }

千羽 | 小虾三级 |园豆:666 | 2010-10-28 12:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册