巧用WebBrowser实现代码操作网页
2011-02-26 01:42
127 查看
回顾一下上一个随笔,给出了两种方法自动化操作网页
篡改HTML代码,加载到WebBrowser运行
使用Fiddle截获POST给服务器的URL和数据,使用HttpRequest类代码POST到服务器
今天给出另外一种方法,就是利用WinForm控件中的WebBrowser控件来操作页面。
这里我们会模拟一个搜索过程,打开百度网站,输入搜索关键字,在搜索结果中打开连接。
![](http://blog.51cto.com/attachment/201106/003605297.png)
![](http://blog.51cto.com/attachment/201106/003616143.png)
首先,我们建立一个Windows Form Application Project,并在界面上拉一个WebBrowser控件。
WebBrowser1的URL我们写成百度的地址
![](http://blog.51cto.com/attachment/201106/003627707.png)
并设置WebBrowser加载网页完成后的事件
![](http://blog.51cto.com/attachment/201106/003637184.png)
需要注意在这个项目中由于会用到一些操作HTML结点的类,需要引用一下的两个DLL。
![](http://blog.51cto.com/attachment/201106/003649332.png)
然后,在后台编写WebBrowser1切换地址后的完成事件
view sourceprint?
当然,还有文档加载完的事件,这里需要知道百度首页搜索框的ID和搜索按钮的ID,以方便填写关键字和执行搜索。我们查看了百度首页的源代码发现了一个用于提交搜索的Form
view sourceprint?
view sourceprint?
view sourceprint?
代码写到这里已经提交搜索了,WebBrowser也会接收这次提交后的记过,下面我们需要在结果中打开一个连接做实验。
先查看一下搜索结果的HTML源代码
![](http://blog.51cto.com/attachment/201106/003705836.png)
view sourceprint?
这样您即可自动的定时运行这个APP来操作页面了。比起使用HttpRequest来POST数据到服务端是不是更好一些呢,没有cookie的烦恼,没有脚本加密算法的烦恼。
篡改HTML代码,加载到WebBrowser运行
使用Fiddle截获POST给服务器的URL和数据,使用HttpRequest类代码POST到服务器
今天给出另外一种方法,就是利用WinForm控件中的WebBrowser控件来操作页面。
这里我们会模拟一个搜索过程,打开百度网站,输入搜索关键字,在搜索结果中打开连接。
![](http://blog.51cto.com/attachment/201106/003605297.png)
![](http://blog.51cto.com/attachment/201106/003616143.png)
首先,我们建立一个Windows Form Application Project,并在界面上拉一个WebBrowser控件。
WebBrowser1的URL我们写成百度的地址
![](http://blog.51cto.com/attachment/201106/003627707.png)
并设置WebBrowser加载网页完成后的事件
![](http://blog.51cto.com/attachment/201106/003637184.png)
需要注意在这个项目中由于会用到一些操作HTML结点的类,需要引用一下的两个DLL。
![](http://blog.51cto.com/attachment/201106/003649332.png)
然后,在后台编写WebBrowser1切换地址后的完成事件
view sourceprint?
public Form1() |
{ |
InitializeComponent(); |
(webBrowser1.ActiveXInstance as SHDocVw.WebBrowser).NavigateComplete2 += |
new SHDocVw.DWebBrowserEvents2_NavigateComplete2EventHandler(Form1_NavigateComplete2); |
} |
void Form1_NavigateComplete2( object pDisp, ref object URL) |
{ |
IHTMLDocument2 doc = (webBrowser1.ActiveXInstance as SHDocVw.WebBrowser).Document as IHTMLDocument2; |
doc.parentWindow.execScript( "window.alert=null" , "javascript" ); |
doc.parentWindow.execScript( "window.confirm=null" , "javascript" ); |
doc.parentWindow.execScript( "window.open=null" , "javascript" ); |
doc.parentWindow.execScript( "window.showModalDialog=null" , "javascript" ); |
doc.parentWindow.execScript( "window.close=null" , "javascript" ); |
} |
view sourceprint?
<A href= "http://images.cnblogs.com/cnblogs_com/wengyuli/201102/201102260141496080.png" ><IMG style= "BACKGROUND-IMAGE: none;BORDER-BOTTOM: 0px;BORDER-LEFT: 0px;PADDING-LEFT: 0px;PADDING-RIGHT: 0px;DISPLAY: inline;BORDER-TOP: 0px;BORDER-RIGHT: 0px;PADDING-TOP: 0px" title=image border=0 alt=image src= "http://images.cnblogs.com/cnblogs_com/wengyuli/201102/201102260141499635.png" width=297 height=109></A> |
于是在代码中我们获取到kw并输入关键字”翁玉礼”,然后点击按钮su |
private void webBrowser1_DocumentCompleted( object sender,WebBrowserDocumentCompletedEventArgs e) |
{ |
HtmlDocument doc = this .webBrowser1.Document; |
doc.GetElementById( "kw" ).InnerText = "翁玉礼" ; |
doc.GetElementById( "su" ).InvokeMember( "click" ); |
} |
先查看一下搜索结果的HTML源代码
![](http://blog.51cto.com/attachment/201106/003705836.png)
view sourceprint?
private void webBrowser1_DocumentCompleted( object sender,WebBrowserDocumentCompletedEventArgs e) |
{ |
HtmlDocument doc = this .webBrowser1.Document; |
if (doc.Url.AbsoluteUri== "http://www.baidu.com/" ) |
{ |
doc.GetElementById( "kw" ).InnerText = "翁玉礼" ; |
doc.GetElementById( "su" ).InvokeMember( "click" ); |
} |
if (doc.Url.AbsoluteUri.Contains( "wd" )) //根据URL中的 |
{ |
HtmlElement table = doc.GetElementById( "1" ); //根据搜索结果的HTML表,找到第一个搜索结果的URL,这里模拟 |
var html = table.Children[0].Children[0].InnerHtml; |
var url = html.Substring(html.IndexOf( "href" )+ 6,html.IndexOf( " target" )); |
this .webBrowser1.Navigate(url); |
} |
} |
相关文章推荐
- 巧用WebBrowser实现代码操作网页
- WPF使用Webbrowser操作网页的主要代码
- html制作简单框架网页二 实现自己的影音驿站 操作步骤及源文件下载 (可播放mp4、avi、mpg、asx、swf各种文件的视频播放代码)
- xml学习(三)---利用xml文件实现数据岛功能(网页显示xml文件中的内容免C#代码操作xml文件)
- Linux下互斥量加锁与解锁操作的C代码实现
- 一行代码实现FMDB的CURD操作
- jquery 表格分页等操作实现代码(pagedown,pageup)
- php 实现信息采集(网页内容抓取)程序代码
- JS实现的网页背景闪电闪烁效果代码
- jquery下json数组的操作实现代码
- 在IE和Firefox火狐中实现网页中的图层透明的CSS代码
- jquery.cookie.js 操作cookie实现记住密码功能的实现代码
- 一行代码实现FMDB的CURD操作
- JavaScript实现防止网页被嵌入Frame框架的代码分享
- JS网页播放声音实现代码兼容各种浏览器
- 文本编辑器 “查找与替换”操作的“全部替换”功能的实现代码 Visual Basic 2005 编写
- JS实现黑色风格的网页TAB选项卡效果代码
- jQuery 操作option的实现代码
- 解析php DOMElement 操作xml 文档的实现代码
- PB调用WEBBROWSER控件进行网页操作