C#多线程使用webbrowser实现采集动态网页的爬虫机器人
2012-09-11 23:14
633 查看
今天在园子里看到 学院派的驴 写的 巧用C#webbrowser以及Application.DoEvents()实现采集动态网页的爬虫机器人
其实之前我也是用类似的方法来抓取需要登陆的web页面,和一些动态加页的面页
我今天要说的是如何实现多线程使用webborwser采集页面
其中我用到了一个WeiFenLuo.winFormsUI.Docking.dll,是一个开源的组建
下载地址:https://github.com/dockpanelsuite/dockpanelsuite/downloads
关于这个组件,园子里已经有前辈做出详细的使用方法,在此我不再多做说明
/article/4578592.html
在MainForm窗体中添加一个WeiFenLuo控件,并且把MainForm窗体的IsMdiContainer属性设置成True
并且添加addWebForm方法,动态添加子窗体
在ChildForm窗体中添加一个Webborwser控件
并且添加打开页面方法
以及读取页面html方法
添加一个多线程方法,用来模拟多线程打开页面,并且读取html
好了.现在使用多线程来执行OpenWebPage方法,就可以模拟多线程操作Webborwser了
这里是我测试写的小程序
http://files.cnblogs.com/jiangming/TestThreadWebBrowser.zip
其实之前我也是用类似的方法来抓取需要登陆的web页面,和一些动态加页的面页
我今天要说的是如何实现多线程使用webborwser采集页面
其中我用到了一个WeiFenLuo.winFormsUI.Docking.dll,是一个开源的组建
下载地址:https://github.com/dockpanelsuite/dockpanelsuite/downloads
关于这个组件,园子里已经有前辈做出详细的使用方法,在此我不再多做说明
/article/4578592.html
在MainForm窗体中添加一个WeiFenLuo控件,并且把MainForm窗体的IsMdiContainer属性设置成True
并且添加addWebForm方法,动态添加子窗体
public void addWebForm(string s) { if (this.InvokeRequired) { this.BeginInvoke(new OneStringParmenters(addWebForm), s); } else { ChildForm f2 = new ChildForm(); f2.Text = s; webForm.Add(s, f2); f2.Show(dockPanel1); } }
在ChildForm窗体中添加一个Webborwser控件
并且添加打开页面方法
public delegate void OneStringParmenters(string str);//1个string参数委托 public void Navigate(string url) { if (this.InvokeRequired) { this.BeginInvoke(new OneStringParmenters(Navigate), url); } else { webBrowser1.Navigate(url); } }
以及读取页面html方法
private string strHtmlLeng = ""; private delegate void NoParameters();//无参数委托; public string StrHtmlLeng { get { if (this.InvokeRequired) { IAsyncResult iar = this.BeginInvoke(new NoParameters(GetHtmlLeng)); while (!iar.IsCompleted) { System.Threading.Thread.Sleep(0); } } else { GetHtmlLeng(); } return strHtmlLeng; } } private void GetHtmlLeng() { strHtmlLeng = webBrowser1.DocumentText; }
添加一个多线程方法,用来模拟多线程打开页面,并且读取html
public static void OpenWebPage(object strUrl) { DateTime dt = DateTime.Now; string u = strUrl.ToString(); IAsyncResult iar = Program.form.BeginInvoke(new OneStringParmenters(Program.form.addWebForm), u); while (!iar.IsCompleted) { System.Threading.Thread.Sleep(0); } int n = Program.form.webForm.Count; Program.form.webForm[u].Navigate(u); System.Threading.Thread.Sleep(TimeSpan.FromMinutes(1)); string strHtml = Program.form.webForm[u].StrHtmlLeng; //把html输出到本地e盘,当采集信息时,可以直接操作html System.IO.StreamWriter sw = new StreamWriter(string.Format("e:/{0}.txt", u)); sw.Write(string.Format("开始时间:{0}\r\n 结束时间:{1}\r\n 打开信息:{2}", dt.ToString("G"), DateTime.Now, strHtml)); sw.Dispose(); }
好了.现在使用多线程来执行OpenWebPage方法,就可以模拟多线程操作Webborwser了
这里是我测试写的小程序
http://files.cnblogs.com/jiangming/TestThreadWebBrowser.zip
相关文章推荐
- 巧用C#webbrowser以及Application.DoEvents()实现采集动态网页的爬虫机器人
- 巧用C#webbrowser以及Application.DoEvents()实现采集动态网页的爬虫机器人
- 巧用C#webbrowser以及Application.DoEvents()实现采集动态网页的爬虫机器人
- PHP使用CURL实现多线程抓取网页
- 如何使用Java语言实现一个网页爬虫
- 第三百五十节,Python分布式爬虫打造搜索引擎Scrapy精讲—selenium模块是一个python操作浏览器软件的一个模块,可以实现js动态网页请求
- 使用Nginx反向代理和内容替换模块实现网页内容动态替换功能
- 使用Python模块webbrowser实现自动打开网页/刷新网页
- c#关于网页内容抓取,简单爬虫的实现。(包括动态,静态的)
- 使用xml+jsp技术实现网页内容动态显示的方案
- 用Python+Selenium+PhantomJS实现采集动态数据的小爬虫
- 萌新的Python学习日记 - 爬虫无影 - 使用BeautifulSoup + css selector 抓取动态网页内容:Knewone
- 使用JS实现网页动态换肤
- 使用paoding lucene分词和网页爬虫实现的简易网页搜索
- c#关于网页内容抓取,简单爬虫的实现。(包括动态,静态的)
- 使用DOM实现批量化布局装载的动态加载网页
- c#关于网页内容抓取,简单爬虫的实现。(包括动态,静态的)
- node.js 学习笔记003 :使用superagent和cheerio实现简单网页爬虫
- php多线程采集网页数据-php采集网页-php爬虫视频教程8