c#抓取网页内容乱码的解决方案
2013-06-03 11:28
405 查看
写过爬虫的同学都知道,这是个很常见的问题了,一般处理思路是: 使用HttpWebRequest发送请求,HttpWebResponse来接收,判断HttpWebResponse中”Content-Type”中的具体编码,再利用StreamReader
将信息流转为具体的编码就OK了。
下面提供第一种思路的一般方法:这种方法基本上解决了大部分的编码问题。 之所以说基本上也是因为有一些网页,在HttpWebResponse 返回的头部中”Content-Type” 有时候不能正确的匹配到具体编码类型,这个时候就会读到乱码。
下面提供一个我使用的方法,这个方法可以正确的将页面转码:
public static void getInnerHtmlAuto(string url)
{
try
{
WebClient wc = new WebClient();
wc.Credentials = CredentialCache.DefaultCredentials;
byte[] htmlBuffer = wc.DownloadData(url);
Regex regex = new Regex("charset\\s*[\\W]?\\s*([\\w-]+)", RegexOptions.IgnoreCase);
string content=Encoding.Default.GetString(htmlBuffer);
Encoding encoding=Encoding.Default;
if(regex.IsMatch(content))
{
encoding=Encoding.GetEncoding(regex.Match(content).Groups[1].Value.Trim());
content=encoding.GetString(htmlBuffer);
}
outFileName = "C:\\log\\" + DateTime.Now.ToString().Replace(" ", "").Replace(":", "").Replace("-", "") + ".html";
using (StreamWriter sw = new StreamWriter(outFileName))//将获取的内容写入文本
{
sw.Write(content);
}
Console.WriteLine(outFileName); //输出保存后的文件名
}
catch (WebException webEx)
{
Console.WriteLine(webEx.Message.ToString());
}
}
相关文章推荐
- c#抓取网页内容乱码的解决方案
- Java网页抓取网页内容时,乱码问题的解决
- curl获取网页内容出现乱码或为空的解决方案,另附curl_getinfo函数解析
- Asp 使用 Microsoft.XMLHTTP 抓取网页内容无乱码处理,并过滤需要的内容
- 抓取网页中的内容、如何解决乱码问题、如何解决登录问题以及对所采集的数据进行处理显示的过程
- Asp 使用 Microsoft.XMLHTTP 抓取网页内容无乱码处理,并过滤须要的内容
- node js 抓取指定网页内容gb2312乱码问题解决
- ASP.NET 中抓取网页内容 并出现服务器提交了协议冲突. Section=ResponseHeader 解决方案
- 使用 python urllib2 抓取网页时出现乱码的解决方案
- 【python】网页内容抓取遭遇乱码问题
- 使用 python urllib2 抓取网页时出现乱码的解决方案
- Android 网页抓取乱码问题解决方案
- python中requests爬去网页内容出现乱码的解决方案
- 在pycharm中抓取网页URL中文乱码解决方案
- curl抓取网页内容时的重定向和乱码解决
- iPhone读取网页内容乱码解决方案
- java 抓取网页乱码问题处理
- 通过代理服务器验证后在抓取网页内容
- c#关于网页内容抓取,简单爬虫的实现。(包括动态,静态的)