`

C#利用WebBrower抓取网页中Ajax加载的内容

    博客分类:
  • C#
 
阅读更多
现在的网页有相当一部分是采用了AJAX技术,不管是采用C#中的WebClient还是HttpRequest都得不到正确的结果,因为这些脚本是在服务器发送完毕后才执行的! 
但我们用IE浏览页面时是正常的,所以解决方法只有1个就是采用WebBrowser控件 
但是使用Webbrowser你会发现,在DownloadComplete事件中,你根本无法知道页面何时才算是真正的加载完毕! 
当然个别有Frame的网页可能会触发多次Complete,即使你采用计数器的办法,即在Navigated事件中++,而在DownloadComplete中做--,也仍然不能得到JS完成执行后的结果,我开始也感觉到非常奇怪,直到后来GG了相关AJAX的文章,明白了其中原委. 
最终解决方案就是利用WebBrowser+Timer来解决抓取页面的问题 
而其中的关键仍然是页面状态,我们可以利用webBrowser1.StatusText,如果返回"完成",表示页面加载完毕! 

示例代码如下: 


private void timer1_Tick(object sender, EventArgs e)
        {        
            
             textBox1.Text += webBrowser1.StatusText;    
            if (webBrowser1.StatusText == "完成")
            {
                
                timer1.Enabled = false;
                //页面加载完成,做一些其它的事
                textBox1.Text += webBrowser1.Document.Body.OuterHtml;
                //webBrowser1.DocumentText 注意不要用这个,这个和查看源文件一样的
            }
        }     
        private void Form1_Load(object sender, EventArgs e)
        {
            string Url = "http://cd.mei8.cn/face/work/windex.aspx?btn=6";
            webBrowser1.Navigate(Url);
        }
  

  


          放三个控件,webBrowser,timer,textBox timer设置为可用

 

分享到:
评论

相关推荐

    C# WebBrowser获取网站数据

    本篇将详细讲解如何利用C# WebBrowser控件来伪装成浏览器访问网页,并绕过反爬虫策略,以及如何从目标网页中获取数据。 首先,我们需要理解C# WebBrowser控件的基本用法。在C#项目中,可以通过以下步骤添加...

    C# 用WebBrowser实现的多页面浏览器

    在进行DOM操作时,开发者可以利用WebBrowser控件的Document对象,该对象代表了当前加载网页的DOM树。通过DOM,开发者可以查找并修改HTML元素,动态添加内容,甚至响应用户的交互事件。这对于实现自动化任务,如自动...

    使用Webbrowser获取异步加载的网民跟帖数据的程序

    针对这种情况,开发者可以利用C#中的Webbrowser控件来模拟浏览器行为,抓取这类动态加载的数据。 【描述】:这个程序是在Visual Studio .NET的C#环境下构建的,它利用了Webbrowser控件的特性,能够执行JavaScript...

    基于C#的webbrowser浏览器

    【描述】在C#中使用WebBrowser控件,可以实现很多实用的功能,例如自动化网页交互、网页数据抓取、本地离线浏览等。开发者可以通过编程方式控制WebBrowser的行为,比如导航到特定URL、执行JavaScript代码、处理页面...

    Ajax网页源码抓取程序

    Ajax网页源码抓取程序利用C#的`WebBrowser`控件解决了抓取动态内容的问题,为数据采集提供了新的可能性。无论是对单个网页还是批量网址,都能有效抓取到Ajax加载的所有内容。这种技术在数据分析、网站监控、信息提取...

    c# 网页内容提取

    这个控件可以加载网页,执行JavaScript,甚至处理AJAX(异步JavaScript和XML)请求。通过WebBrowser控件,开发者可以与网页进行交互,例如点击按钮、填写表单,甚至在页面加载完成后执行自定义脚本来获取特定内容。 ...

    C#生成Html并在WebBrowser中显示

    在C#编程中,生成HTML并在WebBrowser控件中显示是一项常见的任务,尤其在开发桌面应用程序时,我们可能需要创建一个内置的浏览器组件来展示自定义的网页内容。本教程将详细讲解如何实现这一功能,适合C#初学者学习。...

    模拟浏览器抓取网页内容(审查元素中内容)

    1、webBrowser加载网页 (如有Ajax动态加载分页的网站,需要配合页面动作,直到页面加载完成,如:滚动条操作) 2、加载完成后获取webBrowser.Document (配合使用webBrowser_DocumentCompleted和Application....

    C#在网页调用海康威视摄像头实例分享

    在本实例中,我们将深入探讨如何使用C#在网页中调用海康威视的摄像头进行视频流的获取和展示。这个技术应用广泛,尤其是在安全监控、远程视频会议以及在线教育等领域。首先,我们需要理解几个关键概念和技术: 1. *...

    [网络]WebBrowser网页操作(提取元素,自动填表)

    本知识点聚焦于C#中如何利用`WebBrowser`控件进行网页操作,包括元素提取和自动填表。`WebBrowser`控件允许开发者在应用程序内部嵌入一个浏览器引擎,使得与网页的交互变得可能。 首先,我们要理解`WebBrowser`控件...

    循环访问网页获取ajax数据

    从一个足球数据网站循环访问不同网页获取ajax数据 ,使用了线程和... 不能从webbrowser1.documenttext 获取ajax数据 ,需要使用webbrowser1.document.getelementbyid获取ajax内容。每隔4秒转使用委托转到下一个网页。

    天涯论坛阅读器(只看楼主) C#源代码

    2. 数据获取模块:负责使用WebBrowser控件加载网页,解析HTML获取帖子内容。 3. 内容筛选模块:处理获取到的数据,筛选出“只看楼主”的帖子。 4. 显示模块:将筛选后的数据呈现给用户,可能包括格式化文本、图片等...

    网页与C#客户端的无缝交互示例

    4. JavaScript与C#的通信桥接:这可能是一个WebBrowser控件,它可以加载网页并注入JavaScript代码,使得JavaScript能够调用C#的方法。 在JavaScript端,我们需要: 1. 发送AJAX请求:利用XMLHttpRequest或fetch API...

    通过WebBrowser进行页面采集时,有效的跳过js生成的各种验证信息,并获取所有返回的json数据.zip

    在C#中,可以通过`WebBrowser`控件的`DocumentCompleted`事件监听网页加载完成,然后通过`InvokeScript`方法执行特定的JavaScript代码,甚至可以利用`WebBrowser.Document`对象访问DOM元素,触发点击或提交事件。...

    C# IB Google 搜索结果采集模板

    总之,`C# IB Google 搜索结果采集模板`提供了一个实用的框架,通过封装`WebBrowser`控件和利用`jQuery`,使得在C#环境中高效、准确地抓取Google搜索结果变得简单。这样的工具对于需要定期获取网络数据的项目来说...

    C# 电子地图开发 百度API的使用

    这需要在JavaScript中设置事件监听器,然后通过跨域通信(如Ajax、Websocket)与C#后台交互。 7. **数据可视化**:如果需要展示自有的地理数据,可以使用百度地图的热力图、矢量图层等服务,结合C#的数据处理能力,...

    ajax简单入门讲解(SWF)

    **Ajax(Asynchronous JavaScript and XML)技术是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使网页实现异步更新。这种技术可以提升用户体验,使得网页...

    c#WINFORM与WEB的直接交互非webservice方法

    这样,WinForm应用可以控制WebBrowser控件执行JavaScript,与网页中的元素进行交互,甚至触发AJAX请求。 3. **Web API间接交互**:虽然不是直接与Web服务器交互,但可以创建一个本地的Web API服务,WinForm应用调用...

    Ajax城市 城镇联动下拉列表框

    在网页设计和开发中,"Ajax城市 城镇联动下拉列表框"是一种常见的交互功能,用于提高用户填写表单时的体验。这个功能基于AJAX(Asynchronous JavaScript and XML)技术,允许用户在不刷新整个页面的情况下,动态加载...

    NetCut: NetWatcher(Flash/WebBrowser)抓包

    在Flash的时代,它广泛应用于网页游戏和多媒体内容,而WebBrowser则是我们浏览网页、访问互联网的主要工具,它们的网络请求往往包含了大量的用户信息和交互数据。 对于Flash的抓包,NetWatcher能够揭示Flash应用...

Global site tag (gtag.js) - Google Analytics