大家好: 想试试做一个采集HTML中的内容 ,但有一些网站的采集出现乱码。
虽然说如果第一个采集有问题 就换一个编码,但还是有问题
以下是代码
public static string AutoHtml(string url)
{
if (url.ToLower().IndexOf("http://")==-1)
{
url = "http://" + url;
}
WebClient myWebClient = new WebClient();
myWebClient.Credentials = CredentialCache.DefaultCredentials;
byte[] myDataBuffer = null;
try
{
myDataBuffer=myWebClient.DownloadData(url);
}
catch { return null; }
//
string dd = System.Text.Encoding.UTF8.GetString(myDataBuffer);
//
string strWebData = Encoding.Default.GetString(myDataBuffer);
// strWebData = " <title></title><meta charset=gb2312 />";
// string strRegex = @"charset=['""]?(.*?)['""]?\r\n/>";
//Match charSetMatchs = Regex.Match(strWebData, strRegex, RegexOptions.IgnoreCase);
//Regex r = new Regex(strRegex, RegexOptions.IgnoreCase);
//MatchCollection m = r.Matches(strWebData);
//获取网页字符编码描述信息
Match charSetMatch = Regex.Match(strWebData, @"charset=['""]?(.*?)['""]?\s?/>", RegexOptions.IgnoreCase);
string webCharSet = charSetMatch.Groups[1].Value;
if (string.IsNullOrEmpty(webCharSet))
{
webCharSet = "utf-8";
} //换一个编码
strWebData = Encoding.GetEncoding(webCharSet).GetString(myDataBuffer);
return strWebData;
}采集 www.xiaomi.com的时候出现乱码应该如何 解决,原因是?
虽然说如果第一个采集有问题 就换一个编码,但还是有问题
以下是代码
public static string AutoHtml(string url)
{
if (url.ToLower().IndexOf("http://")==-1)
{
url = "http://" + url;
}
WebClient myWebClient = new WebClient();
myWebClient.Credentials = CredentialCache.DefaultCredentials;
byte[] myDataBuffer = null;
try
{
myDataBuffer=myWebClient.DownloadData(url);
}
catch { return null; }
//
string dd = System.Text.Encoding.UTF8.GetString(myDataBuffer);
//
string strWebData = Encoding.Default.GetString(myDataBuffer);
// strWebData = " <title></title><meta charset=gb2312 />";
// string strRegex = @"charset=['""]?(.*?)['""]?\r\n/>";
//Match charSetMatchs = Regex.Match(strWebData, strRegex, RegexOptions.IgnoreCase);
//Regex r = new Regex(strRegex, RegexOptions.IgnoreCase);
//MatchCollection m = r.Matches(strWebData);
//获取网页字符编码描述信息
Match charSetMatch = Regex.Match(strWebData, @"charset=['""]?(.*?)['""]?\s?/>", RegexOptions.IgnoreCase);
string webCharSet = charSetMatch.Groups[1].Value;
if (string.IsNullOrEmpty(webCharSet))
{
webCharSet = "utf-8";
} //换一个编码
strWebData = Encoding.GetEncoding(webCharSet).GetString(myDataBuffer);
return strWebData;
}采集 www.xiaomi.com的时候出现乱码应该如何 解决,原因是?
解决方案 »
- 【求助】SQL存储过程,循环嵌套条件
- 如何写单击TreeView控件节点的事件?
- 将C/S架构的导出改成B/S架构的导出
- 一个数字未知的小数(如0.051)我要如何变成51,并且知道是要×1000
- 认为自己是高手的进来看看这个问题??
- 求救阿,大虾们,快来帮我看看这个很简单的问题啊~~~
- DataGrid的数据列自动显示的问题?等待...
- 做安装程序时,把所有的存储过程转换成sql脚本后,在程序中执行时却不能像创建表一样的sql脚本一样。总是报错。
- 求讓頁面每隔一段時間自動刷新的語句
- script内写C#支持语法自动完成吗?
- 小白不会使用AspNetPager,请高人指教!
- ASP.NET MVC 3.0 遇到的问题
StreamReader stream = new StreamReader(webBrowser.DocumentStream, encoding);
File.WriteAllText(@"C:\mzwu.txt", stream.ReadToEnd(), Encoding.Unicode);
MessageBox.Show(DateTime.Now.ToString() + ": 页面内容获取完成! ");
这种编码的时候最好别用默认的,指定具体编码下试试