C#使用WebBrowser获取网页验证码图片实例
下面通过WebBrowser截取网页上验证码的图,并将验证码以外的部分裁剪掉。 截图思路 首先要分析一下那位朋友要获取的验证图片元素特征: 网址:http://www.jcard.cn/Charge/UCardDirectCharge.as
下面通过WebBrowser截取网页上验证码的图,并将验证码以外的部分裁剪掉。
截图思路
首先要分析一下那位朋友要获取的验证图片元素特征:
网址:http://www.jcard.cn/Charge/UCardDirectCharge.aspx?category=AAWYVVWYKV&product=AAWYVVWYKV010CV这里很简单,我们只要找到src属性为“RandomImage.aspx”结尾的图片,就找到我们所需的这个元素了。
找到这个元素之后,为了方便确定其位置,并确保其不会超出WebBrowser可视范围,我们要为它赋予一个内联样式,使之处于页面的绝对左上角,并设置z-index为9999,以避免被其他元素覆盖,这个样式即为:
"position: absolute; z-index: 9999; top: 0px; left: 0px"
这之后就可以通过WebBrowser的DrawToBitmap方法截图了,截图的宽和高可通过上述元素的ClientRectangle属性取得。
实现截图实例
那么现在建立一个WinForm项目来做测试,设计如下界面:
然后为按钮编写事件处理函数:

private void button1_Click(object sender, EventArgs e) { var wb = new WebBrowser(); wb.Navigate("http://www.jcard.cn/Charge/UCardDirectCharge.aspx?category=AAWYVVWYKV&product=AAWYVVWYKV010CV"); //等待加载完毕 while (wb.ReadyState < WebBrowserReadyState.Complete) Application.DoEvents(); //遍历寻找验证图像所在元素 foreach (HtmlElement f in wb.Document.Images) { if (f.GetAttribute("src").ToLower().EndsWith("randomimage.aspx")) { //将元素绝对定位到页面左上角 f.Style = "position: absolute; z-index: 9999; top: 0px; left: 0px"; //抓图 var b = new Bitmap(f.ClientRectangle.Width, f.ClientRectangle.Height); wb.DrawToBitmap(b, new Rectangle(new Point(), f.ClientRectangle.Size)); pictureBox1.Image = b; break; } } }
收藏文章
精彩图集
精彩文章
- 暂无记录。
热门标签
表格列宽
typeof运算符
乱
收录
阻塞
WSAAsyncSele
元素高度
sessio
回调机制
省市区县
用vbs实现返回
一招
age
非阻塞IO
4G
隐藏表单控件
MSSQL管理
指令
批量重命名
已发送
pyHook
Demo
decode函数
Dota
StringBuilde
序列
python调用
常量
AVL树
巧妙
当前日期
php常用函数
查询封装
表格结构
Driver
a元素
表头固定
隔行换色
大数据量
Gmail
字符长度
设定初始大小
查询历史记录
sum
ArraySortUti
图像方向
最大值最小值
索引组织表
表优化
rpm命令
WScript.Shel
ASP.NET页面
导出为excel
shel
LastOne
BF算法
python3
模拟表单
DNS查询
无刷新分页
赞助商链接
@CopyRight 2002-2008, 1SOHU.COM, Inc. All Rights Reserved QQ:1010969229