技术开发 频道

.NET实现之WebBrowser数据采集—终结篇

    【IT168 技术】我们继续上一篇“.NET实现之(WebBrowser数据采集-基础篇)”,由于时间关系这篇文未能及时编写;上一篇文章发布后,得来了部分博友的反对意见,觉得这样的文章没有意义,WebBrowser采集数据效率低下用WebRequest效率就能提高了,本人不理解,为什么同样是HTTP协议进行数据采集,效率能提高多少,在采集过程中同样要经历种种的高层协议向底层协议转换等过程,我个人感觉WebRequest是实现更多的扩展性,本人的WebBrowser数据采集,并不是谈抓取数据的效率,重点是讲解WebBrowser控件的原理,能用WebBrowser与HTML网页进行很方便的集成,本人的下一篇文章".NET实现之(WebBrowser数据采集-续)",就将用WebBrowser进行与HTML网页进行混合使用,在HTML的对象中我要在我的WebBrowser控件中通过读取数据库,将Winform的控件在HTML中进行呈现,然后将我们的Winform中的数据动态的填入HTML网页中;这样的人性化、方便性、模拟性我想是WebRequest所不能取代的,我们大部分的软件是要提供给用户使用的,有一个友好的用户界面是必须的;

  今天我要讲的主要内容是通过WebBrowser实现数据抓取,上一篇文章并没有讲到怎么抓取数据,而是简单的讲解了WebBrowser控件的由来和一些互操作方面的东西,这篇文章将完全的讲解在用WebBrowser进行数据抓取时遇到的种种问题,本人有很长一段时间都在做数据抓取,第一次做数据抓取的时候是和我的一个好搭档一起做的,当时遇到很多困难还是他默默的解决了;在项目完成之后,我就决定将这样的经验与大家分享;我感觉在用WebBrowser进行抓取的时候最大的问题就是网页加载问题,在WebBrowser控件中有一个事件是我们必须要用到的DocumentCompleted事件,在网页加载完毕过后我们要进行相应的判断,比如当前页面是否是登录页面,我们做的网页抓取工具不可能是傻瓜式的手动抓取点一下抓一下,我们是完全自动化的,我们只需要一个登录就行了,因为现在基本上的网页登陆都是需要验证码的,所以登录需要我们人工的去识别填写,一旦登录成功后,一切均有系统自动完成,比如:动态跳转到采集页面、数据抓取、翻页等等过程都已经自动化,由于网页在频繁的请求过程中难免不太稳定,会造成无缘无故的停止,比如断网、异步加载迟钝、这样我们只能是通过观看界面才能清楚发生了什么,在通过断点继续抓取;我们不讨论那种抓取好坏是讨论哪种更适合用户的项目需求;我们需要看一张图才能明白抓取的大概原理:

  1:这是一幅整图,由于图片太大,本人就截成三个小图了;

.NET实现之WebBrowser数据采集—终结篇

.NET实现之WebBrowser数据采集—终结篇

.NET实现之WebBrowser数据采集—终结篇

  通过上图的详细的步骤说明,我们清楚的指导我们要怎么做了;我们切换到代码片段:

  2:

.NET实现之WebBrowser数据采集—终结篇

  这是本人的项目结构,在Common文件夹里面有一个显眼的文件GatherWebBrowser.cs这是本人对WebBrowser控件进行了一层简单的封装,就是在里面加上了一些事件参数,这个文件下面有一个GatherWebBrowserArgs.cs文件,这个是WebBrowserDocumentCompletedEventArgs对象的配送对象。

0
相关文章