获取页面Html代码,自动识别编码
2009-06-11 16:29
543 查看
public string GetHtml(string url)
{
string code = DecodeData(url);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Timeout = 30000;
request.Headers.Set("Pragma", "no-cache");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream streamReceive = response.GetResponseStream();
Encoding encoding = code != string.Empty ? Encoding.GetEncoding(code.ToUpper()) : Encoding.Default;
StreamReader streamReader = new StreamReader(streamReceive, encoding);
string strResult = streamReader.ReadToEnd();
streamReader.Close();
streamReader.Dispose();
return strResult;
}
//http://blog.sunmast.com/natas/archive/2004/10/30/989.aspx,略有改动.
private string DecodeData(string Url)
{
WebRequest r = WebRequest.Create(Url);
WebResponse w = r.GetResponse();
//
// first see if content length header has charset = calue
//
String charset = string.Empty;
String ctype = w.Headers["content-type"];
if (ctype != null)
{
int ind = ctype.IndexOf("charset=");
if (ind != -1)
{
charset = ctype.Substring(ind + 8);
}
}
// save data to a memorystream
MemoryStream rawdata = new MemoryStream();
byte[] buffer = new byte[1024];
Stream rs = w.GetResponseStream();
int read = rs.Read(buffer, 0, buffer.Length);
while (read > 0)
{
rawdata.Write(buffer, 0, read);
read = rs.Read(buffer, 0, buffer.Length);
}
rs.Close();
//
// if ContentType is null, or did not contain charset, we search in body
//
if (charset == null)
{
MemoryStream ms = rawdata;
ms.Seek(0, SeekOrigin.Begin);
StreamReader srr = new StreamReader(ms, Encoding.ASCII);
String meta = srr.ReadToEnd();
if (meta != null)
{
int start_ind = meta.IndexOf("charset=");
int end_ind = -1;
if (start_ind != -1)
{
end_ind = meta.IndexOf("\"", start_ind);
if (end_ind != -1)
{
int start = start_ind + 8;
charset = meta.Substring(start, end_ind - start + 1);
charset = charset.TrimEnd(new Char[] { '>', '"' });
}
}
}
}
return charset.ToString();
}
相关文章推荐
- 获取页面Html代码,自动识别编码。
- 自动编码获取页面html代码
- JSoup 获取正文,自动识别页面编码Charset
- 自动识别HTML代码里的图片链接,并下载到服务器的指定目录源码
- C# HttpWebRequest访问页面时自动识别编码
- 获取html页面代码的方法
- 爬虫技术 -- 进阶学习(九)使用HtmlAgilityPack获取页面链接(附c#代码及插件下载)
- httpclient自动获取页面编码,解决网页抓取乱码问题
- 自动识别HTML代码里的图片链接,并下载到服务器的指定目录源码
- js获取html页面代码中图片地址的实现代码
- 获取asp.net解析页面完毕后后的html代码
- 获取html页面的字符集编码方式
- 自动识别HTML代码里的图片链接,并下载到服务器的指定目录(开源)
- 获取页面源码(自动获取页面的编码格式)
- Laravel获取view生成html页面的代码
- dcef3获取页面html代码
- 爬虫技术(六)-- 使用HtmlAgilityPack获取页面链接(附c#代码及插件下载)
- 爬虫技术 -- 基础学习(五)解决页面编码识别(附c#代码)
- Html页面传参获取代码
- 在java后台用javacript写一段小代码实现html页面颜色的自动改变