游戏技术文章

c#关于网页内容抓取,简单爬虫的实现。(包括动态,静态的)

时间:2016-12-26 14:06:42  作者:棋牌资源网  来源:棋牌资源网  查看:7869  评论:0
内容摘要:整理一下最近做的几个项目。总结几个用到的知识点和关键部分代码,以供大家学习交流。 1、爬虫抓取网页内容信息。可以用System.Net.WebRequest、webclient等类来处理。 2、对于某些动态网页,生成页面信心由javascript动态生成链接信息的。也可以进行分析...
整理一下最近做的几个项目。总结几个用到的知识点和关键部分代码,以供大家学习交流。 1、爬虫抓取网页内容信息。可以用System.Net.WebRequest、webclient等类来处理。 2、对于某些动态网页,生成页面信心由javascript动态生成链接信息的。也可以进行分析传值的方式,在post的时候将参数带进去(大多数网站的参数是有规则的)。实在不行也可以使用webbrowser控件,模拟点击。或传值。 以http://www.aslan.com.cn/Code.aspx网站为例。 部分代码如下:

//使用webbrowser访问指定网页。address为网页地址

private void Navigate(WebBrowser web,String address)         {             if (String.IsNullOrEmpty(address)) return;             if (address.Equals("about:blank")) return;             if (!address.StartsWith("http://")) address = "http://" + address;             try             {                 web.Navigate(new Uri(address));             }             catch (System.UriFormatException)             {                 return;             }

        }

由于要抓取网页内容及在加载完毕后提交参数所以需要验证加载完毕即DocumentCompleted。而在实际使用过程当中,发现在一个页面的加载过程中可能会有多次DocumentCompleted,所以在这里采用+1、-1的方式来判断是否加载完毕。

首先在formload中绑定网页加载完毕事件。

 

并且定义标示count

 

然后在每次导航后给标示+1 

在每次DocumentCompleted中给count-1,最后当count=0时即表示页面加载完毕。可以进行对页面信息的处理等操作了。

 

    private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)         {             count = count - 1;             string eventTarget = "dg_Code$ctl24$ctl";                         if (0 == count && isComplete == false && j<=10)             {                 eventTarget = eventTarget + getPage(j);                 if (!isLastPage(webBrowser1))                 {                     InvokeScriptMethod(webBrowser1, eventTarget, "");                 }                 else                 {                     MessageBox.Show("抓取完毕");                 }                     postComplete = true;                     j++;                                  }             else if (postComplete == true)             {                 dealWithByDOM(webBrowser1);                 postComplete = false;             }             else if (0 == count && isComplete)             {                System.Windows.Forms.HtmlDocument  htdoc = webBrowser1.Document;                 for (int i = 0; i < htdoc.All.Count; i++)                 {                     if (htdoc.All[i].Name == "btn_search")                     {                         htdoc.All[i].InvokeMember("click");//引发”CLICK”事件                         isComplete = false;                         break;                     }                 }             }                     }                 

剩下的就是对html的分析,如何在茫茫多的html代码中找到我们需要的信息呢?在这里我是通过HtmlAgilityPack类来处理html内容提取的。

其中HtimlAgilityPack类是codeplex上的提供的一个类,下载地址http://htmlagilitypack.codeplex.com/用来处理html文件还是非常不错的(个人感觉挺好用)

以上就是该程序的部分实现代码。最后效果图如下:(不过不到万不得已最好不要使用webbrowser的方式做爬虫,它的速度太慢了,我要抓取的信息只有286页,可是花了我将近10分钟的时间)

下面是程序运行效果图:(为了展示方便,左边为webBrowser控件导航到目标网站的结果,右边dataGridview为抓取后经过提取的所需信息。)

 

c#关于网页内容抓取,简单爬虫的实现。(包括动态,静态的)

 

标签:c#关于网页内容抓取 简单爬虫的实现 包括动态静态的 

欢迎加入VIP,【VIP售价:只要288元永久VIP会员】畅享商业棋牌游戏程序下载,点击开通!

下载说明


☉本站所有源码和资源均由站长亲自测试-绝对保证都可以架设,运营!
☉如源码和资源有损坏或所有链接均不能下载,请告知管理员,

☉本站软件和源码大部分为站长独资,资源购买和收集,放心下载!

☉唯一站长QQ:1004003180  [人格担保-本站注重诚信!]

☉购买建议E-mail:1004003180@qq.com   源码收购 E-mail:1004003180@qq.com    

☉本站文件解压密码  【文章内都自带解压密码,每个密码不同!】


本站提供的所有源码,均来源站长提供,仅学习交流 浙ICP备09009969号

由此产生不良后果和法律责任与本站无关,如果侵犯了您的版权,请来信告知 1004003180@qq.com 将及时更正和删除! 

Copyright © 2008-2024 棋牌资源网,你身边的棋牌资源下载站    All Rights Reserved