您的足迹:首页 > 未分类 >关于使用webBrowser操作HTML的帮助类

关于使用webBrowser操作HTML的帮助类

webBrowser操作HTML,可以模拟点击,提交填写等,网页外挂利器,还可以做爬虫等,微软的webBrowser控件可谓强大。
using mshtml;

using System;

using System.Collections.Generic;

using System.Data;

using System.Runtime.InteropServices;

using System.Text;

using System.Windows.Forms;

 

namespace Insert

{

    /// <summary>

    /// 关于使用webBrowser操作HTML

    /// </summary>

    public class HTMLHelper

    {

 

        #region 取出Cookie

        [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]

        static extern bool InternetGetCookieEx(string pchURL, string pchCookieName, StringBuilder pchCookieData, ref System.UInt32 pcchCookieData, int dwFlags, IntPtr lpReserved);

 

        /// <summary>

        /// 取出Cookie,当登录后才能取 

        /// </summary>

        /// <param name="url">链接地址</param>

        /// <returns>cookie值</returns>

        public static string GetCookies(string url)

        {

            uint datasize = 1024;

            StringBuilder cookieData = new StringBuilder((int)datasize);

            if (!InternetGetCookieEx(url, null, cookieData, ref datasize, 0x2000, IntPtr.Zero))

            {

                if (datasize < 0)

                    return null;

 

                cookieData = new StringBuilder((int)datasize);

                if (!InternetGetCookieEx(url, null, cookieData, ref datasize, 0x00002000, IntPtr.Zero))

                    return null;

            }

            return cookieData.ToString();

        }

 

        #endregion

 

        #region 注入cookie

 

        [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]

        public static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData);

        /// <summary>

        ///  注入cookie到浏览器中

        /// </summary>

        /// <param name="path">链接地址</param>

        /// <param name="cookie">cookie值</param>

        ///  <param name="cookiename">cookie名称</param>

        public void WebBrowserControl(string path, string cookie, string cookiename = null)

        {

            if (cookiename == null)

                InternetSetCookie(path, "JSESSIONID", cookie);

            else

                InternetSetCookie(path, cookiename, cookie);

        }

 

        #endregion

 

        #region 设置HTML中指定id元素的值

        /// <summary>

        /// 设置HTML中指定id元素的值

        /// </summary>

        /// <param name="wb">WebBrowser</param>

        /// <param name="idName">id名称</param>

        /// <param name="value">设置的值</param>

        public void SetHtmlElementValue(WebBrowser wb, string idName, string value)

        {

            HtmlElement tbUserid = wb.Document.All[idName];

            tbUserid.SetAttribute("value", value);

        }

 

        #endregion

 

        #region 点击HTML中元素处理事件

        /// <summary>

        /// 点击HTML中元素处理事件

        /// </summary>

        /// <param name="wb">WebBrowser</param>

        /// <param name="idName">id名称</param>

        public void ClickElement(WebBrowser wb, string idName)

        {

            HtmlElement btnSubmit = wb.Document.All[idName];

            btnSubmit.InvokeMember("click");

        }

 

        #endregion

 

        #region 去掉弹出确认框

        /// <summary>

        /// 去掉弹出确认框 引用com +Microsoft HTML Object Library

        /// </summary>

        /// <param name="wb">WebBrowser</param>

        public void RemoveAlert(WebBrowser wb)

        {

            IHTMLWindow2 win = (IHTMLWindow2)wb.Document.Window.DomWindow;

            string s = @"function confirm() {";

            s += @"return true;";

            s += @"}";

            s += @"function alert() {}";

            win.execScript(s, "javascript");

        }

 

        #endregion

 

        #region 获取系统上Table的数据(未测)

 

        /// <summary>

        /// 获取系统上Table的数据

        /// </summary>

        /// <param name="wb">WebBrowser</param>

        /// <param name="dt">DataTable</param>

        /// <param name="TableIndex">页面上第几个Table</param>

        /// <returns></returns>

        public DataTable GetHTMLDataTable(WebBrowser wb, DataTable dt, int TableIndex)

        {

            HtmlElementCollection tbs = wb.Document.GetElementsByTagName("table");

            if (TableIndex > tbs.Count)

                return null;

 

            int count = 0;

            foreach (HtmlElement tb in tbs)

            {

                if (count < TableIndex - 1)

                {

                    count++;

                    continue;

                }

                HtmlElementCollection trs = tb.GetElementsByTagName("tr");

                foreach (HtmlElement tr in trs)

                {

                    HtmlElementCollection tds = tr.GetElementsByTagName("td");

                    if (tds.Count > 0)

                    {

                        DataRow dr = dt.NewRow();

                        for (int i = 0; i < tds.Count; i++)

                        {

                            dr[i] = tds[i].InnerText;

                        }

                        dt.Rows.Add(dr);

                    }

                }

            }

            return dt;

        }

 

        #endregion

 

 

    }

}
本博客所有文章如无特别注明均为原创。作者:cc复制或转载请以超链接形式注明转自 我的博客
原文地址《关于使用webBrowser操作HTML的帮助类

相关推荐

发表评论

路人甲 表情
Ctrl+Enter快速提交

网友评论(0)