c#遠程html數據抓取實例分享

c#遠程html數據抓取實例分享,第1張

```c

代碼如下:

/// summary

        /// 獲取遠程html

        /// /summary

        /// param name= url /param

        /// param name= methed/param

        /// param name= param /param

        /// param name= html /param

        /// returns /returns

        public static bool GetHttp(string url, string methed, string param, out string html)

        {

            methed = methed.ToLower();

            if (param != null methed == get param.Length 0)

            {

                url = ? param;

            }

              [http://www.jshk.com.cn/mb/reg.asp?kefu=xiaoding)

            try

            {

                MSXML2.XMLHTTP mx = new MSXML2.XMLHTTPClass();

                mx.open(methed, url, false, null, null);

                if (param != null methed == post param.Length 0)

                {

                    mx.setRequestHeader( Content-Length , param.Length.ToString());

                    mx.setRequestHeader( Content-Type , application/x-www-form-urlencoded

                }

                mx.send(param);

                if (mx.readyState != 4)

                {

                    html = 遠程連接失敗:-4

                    return false;

                }

                html = mx.responseText;

                return true;

            }

            catch (Exception ex)

            {

                html = 遠程連接失敗: ex.Message;

                return false;

            }

        }

        public static bool GetHttp1(string url, string methed, string param, string referer, string encode, out string html)

        {

            //return GetHttp(url,methed,param,out html);

            //string encode = utf-8

            //string methed = sendType.ToString();

            if (param != null methed == get param.Length 0)

            {

                if (url.IndexOf( ? ) = 0)

                {

                    url = param;

                }

                else

                {

                    url = ? param;

                }

            }

            try

            {

                HttpWebRequest webreq = (HttpWebRequest)WebRequest.Create(url);

                webreq.Proxy=null;

                webreq.Timeout = 1000 * 6;

                webreq.ContentType = application/x-www-form-urlencoded

                webreq.UserAgent = User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0

                //webreq.UserAgent = Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)

                //穀歌的:User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36

                //火狐的:User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0

                //標準格式爲: 瀏覽器標識 (操作系統標識; 加密等級標識; 瀏覽器語言) 渲染引擎標識 版本信息

                //webreq.AllowAutoRedirect = false;

                //頻繁請求一個網址時,過段時間就會出現“基礎連接已經關閉”

                //webreq.KeepAlive = false;

                //webreq.ProtocolVersion = HttpVersion.Version10;

                if (referer.Length 0)

                {

                    webreq.Referer = referer;

                }

                CookieContainer mycookies = new CookieContainer();

                webreq.CookieContainer = mycookies;

                //if (this.cookieList != null)

                //{

                //    webreq.CookieContainer.Add(this.GetCookies(webreq.RequestUri, this.cookieList));

                //}

                webreq.Method = methed;

                //post 開始

                if (param != null methed == post )

                {

                    byte[] arrbyte = Encoding.GetEncoding(encode).GetBytes(param);

                    webreq.ContentLength = arrbyte.Length;

                    Stream newStream = webreq.GetRequestStream();

                    newStream.Write(arrbyte, 0, arrbyte.Length);

                    newStream.Close();

                }

                //post 結束

                WebResponse w = webreq.GetResponse();

                //返廻HTML

                using (HttpWebResponse webres = (HttpWebResponse)webreq.GetResponse())

                {

                    using (Stream dataStream = webres.GetResponseStream())

                    {

                        using (StreamReader reader = new StreamReader(dataStream, Encoding.GetEncoding(encode)))

                        {

                            html = reader.ReadToEnd();

                            //this.cookieList = webreq.CookieContainer.GetCookies(webreq.RequestUri);

                            webreq.Abort();//可能會解決卡住或阻塞問題

                        }

                    }

                }

            }

            catch (Exception ex)

            {

                html = 出現異常(HttpHelper.GetHTML),遠程連接失敗: ex.Message url: url;

                //System.Windows.Forms.MessageBox.Show(html);

                return false;

            }

            return true;

        }

```


本站是提供個人知識琯理的網絡存儲空間,所有內容均由用戶發佈,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵擧報。

生活常識_百科知識_各類知識大全»c#遠程html數據抓取實例分享

0條評論

    發表評論

    提供最優質的資源集郃

    立即查看了解詳情