HttpWebRequest获取网页源代码时自动识别网页编码,通过读取页面中的charset和读取http头中的编码信息获取页面的编码,基本可以正确获取网页编码
<!--
<br />
<br />Code highlighting produced by Actipro CodeHighlighter (freeware)
<br />http://www.CodeHighlighter.com/
<br />
<br />-->static string GetEncoding(string url)
{
HttpWebRequest request = null;
HttpWebResponse response = null;
StreamReader reader = null;
try
{
request = (HttpWebRequest)WebRequest.Create(url);
request.Timeout = 20000;
request.AllowAutoRedirect = false;
response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK && response.ContentLength < 1024 * 1024)
{
if (response.ContentEncoding != null && response.ContentEncoding.Equals("gzip", StringComparison.InvariantCultureIgnoreCase))
reader = new StreamReader(new GZipStream(response.GetResponseStream(), CompressionMode.Decompress));
else
reader = new StreamReader(response.GetResponseStream(), Encoding.ASCII);
string html = reader.ReadToEnd();
Regex reg_charset = new Regex(@"charset/b/s*=/s*(?<charset>[^""]*)");
if (reg_charset.IsMatch(html))
{
return reg_charset.Match(html).Groups["charset"].Value;
}
else if (response.CharacterSet != string.Empty)
{
return response.CharacterSet;
}
else
return Encoding.Default.BodyName;
}
}
catch
{
}
finally
{
if (response != null)
{
response.Close();
response = null;
}
if (reader != null)
reader.Close();
if (request != null)
request = null;
}
return Encoding.Default.BodyName;
}
/// <summary>
/// 获取源代码
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
static string GetHtml(string url, Encoding encoding)
{
HttpWebRequest request = null;
HttpWebResponse response = null;
StreamReader reader = null;
try
{
request = (HttpWebRequest)WebRequest.Create(url);
request.Timeout = 20000;
request.AllowAutoRedirect = false;
response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK && response.ContentLength < 1024 * 1024)
{
if (response.ContentEncoding != null && response.ContentEncoding.Equals("gzip", StringComparison.InvariantCultureIgnoreCase))
reader = new StreamReader(new GZipStream(response.GetResponseStream(), CompressionMode.Decompress), encoding);
else
reader = new StreamReader(response.GetResponseStream(), encoding);
string html = reader.ReadToEnd();
return html;
}
}
catch
{
}
finally
{
if (response != null)
{
response.Close();
response = null;
}
if (reader != null)
reader.Close();
if (request != null)
request = null;
}
return string.Empty;
}
分享到:
相关推荐
HttpWebRequest获取网页源代码时自动识别网页编码,通过读取页面中的charset和读取http头中的编码信息获取页面的编码,基本可以正确获取网页编码
另外一位网友空间/IV提供的代码,功能同HttpWebRequest获取网页源代码时自动识别网页编码
C#实现通过HttpWebRequest发送POST请求实现网站自动登陆
本文实例讲述了C#获取网页源代码的方法。分享给大家供大家参考。具体如下: public string GetPageHTML(string url) { try { HttpWebRequest wr = WebRequest.Create(url) as HttpWebRequest; wr.Method = get;...
亲测,成功运行。 c#获取网页源码案例,C#获取指定网页HTML原代码可使用 WebClient WebRequest HttpWebRequest 三种方式来实现。 当然也可使用webBrowse!在此就不研究webBrowse如何获取了。
本文分享了一个使用HttpWebRequest读取远程网页的案例,供大家参考学习。
C#使用HttpWebRequest自动更新客户端应用程序
NChardet文本文件编码探测库源码,C#,txt文件编码自动探测 用于自动探测TXT文本文件编码,支持GB2312、UTF-8、ASCII等几乎所有主流编码的探测,使用方法如下: static public Encoding GetEncoding(string bookPath...
HttpWebRequest详解HttpWebRequest详解HttpWebRequest详解
使用HttpWebRequest访问网页
httpwebrequest调用webservice返回数据
c#HttpWebRequest与HttpWebResponse实现模拟点击链接,模拟点击按钮和,网页抓取
HttpWebRequest模拟上传文件封装代码
httpwebrequest 封装类
这是一个简单的C#编程示例,是我在微软网站上看了一些教程后,第一次用C#语言编码训练的结果,选择了使用使用HttpWebRequest和HttpWebResponse类进行网页获取和正则表达式进行网页分析作为课题。 该训练主要使用...
asp.net 服务端代码以 xml utf-8的格式向指定地址post 数据并接收返回值 HttpWebRequest 简单的代码事例,可以自行扩展使用
HttpWebRequest: ...使用HttpWebRequest可以让开发者控制请求/...HttpWebRequest通常和WebResponse一起使用,一个发送请求,一个获取数据。HttpWebRquest更为底层一些,能够对整个访问过程有个直观的认识,但同时也更加复
自己用httpwebrequest写的自动在Mop打卡的程序,带源代码 不小心把老代码发上来了,请自行添加以下代码 public bool punch()函数最后return true; MP.cs里重载public bool punch(string icode)里面的返回判断忘记...