c#遠程html數據抓取實例分享
```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;
}
```
本站是提供個人知識琯理的網絡存儲空間,所有內容均由用戶發佈,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵擧報。
0條評論