weixin_43975635 2021-09-24 10:28 采纳率: 100%
浏览 55
已结题

webbrowser如何获取ajax动态加载的数据

代码:

InternetSetCookie(url, null, nn);
            webBrowser1.Navigate(url);
            webBrowser1.ScriptErrorsSuppressed = true;

获取的内容:

        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            if ((e.Url != webBrowser1.Url) || (webBrowser1.ReadyState != WebBrowserReadyState.Complete))
                return;
            //下面写你要在页面加载完毕后执行的代码。
            richTextBox2.Text = webBrowser1.Document.Body.InnerHtml;
        }

网页:

img


获取的网页:

img

  • 写回答

2条回答 默认 最新

  • CSDN专家-showbo 2021-09-24 12:21
    关注

    页面加载完毕不一定ajax已经请求完毕并渲染数据,需要用Timer或者线程定时检查下dom对象是否已经有值,有值了在获取
    示例代码如下,有帮助麻烦点个采纳【本回答右上角】,谢谢~~

    img

            
            private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
            {
                if ((e.Url != webBrowser1.Url) || (webBrowser1.ReadyState != WebBrowserReadyState.Complete))
                    return;
                richTextBox2.Text = "文档已加载完毕,等待5s计时器完成后再获取内容";
                bool ajaxLoaded = false;
                new System.Threading.Thread(() => {
    
                    while (true)
                    {
                        this.Invoke(new Action(()=> {
                            if (webBrowser1.Document.GetElementById("aaa").GetAttribute("value") != "")
                            { //注意修改这里的代码,获取加载页面的控件,如工单号判断有值了才执行获取body.innerHTML操作
    
                                richTextBox2.Text = webBrowser1.Document.Body.InnerHtml;
                            }
                        }) );
                        if (ajaxLoaded) break;
                        System.Threading.Thread.Sleep(100);//100ms检查一次
                    }
                
                }).Start();
                //下面写你要在页面加载完毕后执行的代码。
    
    
            }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月3日
  • 已采纳回答 9月25日
  • 创建了问题 9月24日

悬赏问题

  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献