龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > asp.net编程 >

C#使用WebBrowser获取网页验证码图片实例

时间:2009-12-21 11:47来源:未知 作者:admin 点击:
分享到:
下面通过WebBrowser截取网页上验证码的图,并将验证码以外的部分裁剪掉。 截图思路 首先要分析一下那位朋友要获取的验证图片元素特征: 网址:http://www.jcard.cn/Charge/UCardDirectCharge.as

下面通过WebBrowser截取网页上验证码的图,并将验证码以外的部分裁剪掉。

截图思路
首先要分析一下那位朋友要获取的验证图片元素特征:
网址:http://www.jcard.cn/Charge/UCardDirectCharge.aspx?category=AAWYVVWYKV&product=AAWYVVWYKV010CVimage这里很简单,我们只要找到src属性为“RandomImage.aspx”结尾的图片,就找到我们所需的这个元素了。
找到这个元素之后,为了方便确定其位置,并确保其不会超出WebBrowser可视范围,我们要为它赋予一个内联样式,使之处于页面的绝对左上角,并设置z-index为9999,以避免被其他元素覆盖,这个样式即为:
"position: absolute; z-index: 9999; top: 0px; left: 0px"
这之后就可以通过WebBrowser的DrawToBitmap方法截图了,截图的宽和高可通过上述元素的ClientRectangle属性取得。

实现截图实例
那么现在建立一个WinForm项目来做测试,设计如下界面:

image

然后为按钮编写事件处理函数:

Code [http://www.xueit.com]
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;
        }
    }
}


精彩图集

赞助商链接