asp.net 采集 的页面有ajax异步调用的数据。通过
 WebRequest request = WebRequest.Create(url); //请求url
 WebResponse response = request.GetResponse(); //获取url数据
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8"));
string tempStr = reader.ReadToEnd();
tempStr 里没有异步调用过来的数据。

 WebBrowser web = new WebBrowser();
 HtmlDocument doc = web.Document; //抓取网页
 HtmlElement hem = doc.GetElementById("list_uin");//这里就像js里面一样通过ID来查找对象
则可以捕获 ajax异步调用的数据。
但是webBrowser 在asp.net下运行报错。

解决方案 »

  1.   

    肯定是能用的,
    你说的 【 但是webBrowser 在asp.net下运行报错。】这肯定不是不能用的问题,而是你代码有问题, 你应该把错误和代码部分贴出来,初步猜测是你没有添加引用
      

  2.   

    肯定不能用。webBrowser在winForm才可以用
      

  3.   


    webs = new WebBrowser();
    webs.Navigate("http://xui.ptlogin2.qq.com/cgi-bin/qlogin");//让webbrowser加载这个地址,这是腾讯网自动登录,我们就是利用腾讯的自动检测来获取我们登录的QQ号
    webs.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(WebCompleted);   
     void WebCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
            {
                //为了保险起见 我们在这再次判断是否加载完成
                string bb = aa;
                if (webs.ReadyState == WebBrowserReadyState.Complete && webs.IsBusy == false)
                {
                    HtmlDocument doc = webs.Document; //抓取网页
                    HtmlElement hem = doc.GetElementById("list_uin");//这里就像js里面一样通过ID来查找对象
                    while (doc == null || hem == null)  //网络操作总是伴随着一些不可预知的异常,所以在这以防万一对象为空,我们继续判断
                    {                  
                    }
                    for (int i = 0; i < hem.Children.Count; i++)
                    {
                        string innertext = hem.Children[i].InnerText.Trim(); //获取到昵称和QQ号,格式是这样的  昵称(qq号)
                        string[] temps = innertext.Split(' '); //我们把昵称和(qq号)分离
                        string name = temps[0]; //得到昵称
                        string num = temps[temps.Length - 1]; //得到QQ号
                        num = num.Replace("(", "").Replace(")", ""); //因为这里我们得到的QQ号还是(qq号)带有括号,所以需要去掉括号
                       // ListViewItem item = new ListViewItem(); //创建Listviewitem对象
                       // item.Text = name;  //将昵称设置为文本
                       // item.SubItems.Add(num);//将QQ号添加进子项
                       //listView1.Items.Add(item);//最后将listviewitem对象添加进listview
                    }
                }
                else
                {            }
            }
    进委托之后webs.ReadyState是null