WebBrowser小示例(二)

接下来我们对已经登录的校内网页进行数据读取:

接示例(一)中的操作,我们已经进入了校内官方个人首页,能看到在导航条的右侧有个搜索框,我们下面要完成的任务就是在winform页面中输入我们要搜索人的姓名,然后从结果页面中读取我们所要的信息:同示例(一)中一样,我们取得搜索文本框的id或name并生成HtmlElment对象并执行查询:

代码
string  key  =  txtkey.Text.ToString();
            
if  (key  ==   "" )
                
return ;
            HtmlElement search 
=  webBrowser1.Document.All[ " navSearchInput " ];
            HtmlElement btn 
=  webBrowser1.Document.All[ " navSearchSubmit " ];
            
if  (search  ==   null   ||  btn  ==   null )
                
return ;
            search.SetAttribute(
" value " , key);
            btn.InvokeMember(
" click " );

 

为避免页面刷新不完整会出现异常,我们可以用WebBrowser的DocumentCompleted和Navigated事件,前者在页面加载完毕时执行,后者在加载开始时执行,我们可以在这两个事件中设置一个初始值为0r 公有整形变量count,在执行Navigated时加1,在执行DocumentCompleted减1,如果count为0我们就读取页面:

 

代码
         private   void  webPage_Navigated( object  sender, WebBrowserNavigatedEventArgs e)
        {
            count
++ ;            
        }
 
private   void  webPage_DocumentCompleted( object  sender, WebBrowserDocumentCompletedEventArgs e)
        {
              count
-- ;
// 因为我们搜索出来的校友都是以姓名:****   资料: ***  的形式显示所以可以使用string的split()函数截取。
             if  (count  ==   0 )
            {
// list-results 结果集div的id
                 string  innerText  =   this .webBrowser1.Document.GetElementById( " list-results " ).InnerText;
            innerText 
=  innerText.Replace( " \r\n " "" );
            
string [] strInnerText =  innerText.Split( new   string [] {  " 姓名: " "  资料: "  }, StringSplitOptions.RemoveEmptyEntries);
            ArrayList ar 
=   new  ArrayList();
            
if  (strInnerText.Length  >   0 )
            {
                
for  ( int  i  =   0 ; i  <  strInnerText.Length; i ++ )
                {
                    
// 去除掉不需要的字符
                     if  (strInnerText[i].Contains( " 加为好友发站内信 " ))
                        strInnerText[i] 
=  strInnerText[i].Replace( " 加为好友发站内信 " "" );
                    ar.Add(strInnerText[i]);
                    
// MessageBox.Show(ar[i].ToString());
                     if (i % 2 != 0 )
                        txtinfo.Text 
+=   " 姓名: " + ar[i].ToString()  +   " \r\n " ;
                    
else   if  (i  %   2   ==   0   && ar[i].ToString() != txtkey.Text.ToString() && ar[i].ToString() != "" )
                        txtinfo.Text 
+=   " 学校: "   +  ar[i].ToString()  +   " \r\n " ;
                    
else  
                    {
                        txtinfo.Text 
+=   " 姓名: "   +  ar[i].ToString()  +   " \r\n " ;
                    }
                }
            }
            }
        }

 

 

这样一个简单的页面截取就完成了。接下来继续讨论

你可能感兴趣的:(WebBrowser)