C#得到网页源码问题

weblogical 2008-12-22 10:49:35
public string getCode(string url)
{
if (!Regex.IsMatch(url, @"(http(s)?://)?([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?", RegexOptions.IgnoreCase))
{
throw new Exception("The url is invalid!");
}
try
{
//WebRequest mywebReq = WebRequest.Create(url);
//WebResponse mywebRep = mywebReq.GetResponse();
//Stream mystream = mywebRep.GetResponseStream();
//StreamReader sr = new StreamReader(mystream, e);
WebClient myWebClient = new WebClient();
myWebClient.Credentials = CredentialCache.DefaultCredentials;
byte[] myDataBuffer = myWebClient.DownloadData(url);

string getValue = Encoding.Default.GetString(myDataBuffer);
Match charSetMatch = Regex.Match(getValue, "<meta([^<]*)charset=([^<]*)\"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
string webCharSet = charSetMatch.Groups[2].Value;
if (webCharSet == null || webCharSet == "")
{
webCharSet = "utf-8";
}
getValue = Encoding.GetEncoding(webCharSet).GetString(myDataBuffer);
return getValue;
}
catch
{
throw new Exception("Request timed out!");
}
}


我打印了出来,发现源码比较少,比如百度 可以完全打印出来;换一个比较长的 就不行了,请问怎么回事?
...全文
115 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jefflovejava 2008-12-22
  • 打赏
  • 举报
回复
Match charSetMatch = Regex.Match(getValue, "<meta([^<]*)charset=([^<]*)\"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
string webCharSet = charSetMatch.Groups[2].Value;
if (webCharSet == null || webCharSet == "")
{
webCharSet = "utf-8";
}
getValue = Encoding.GetEncoding(webCharSet).GetString(myDataBuffer);

不用这一段也不行么?
weblogical 2008-12-22
  • 打赏
  • 举报
回复
我打印的是网页源代码
xskj0525 2008-12-22
  • 打赏
  • 举报
回复
可能问题是出在那个正则上
估计是没有完全匹配 你那个源码较长的代码里所有url吧 有些还是没有匹配到
建议用正则工具看一下

其中有部分是自动转换编码的吧 呵呵 收录下!
weblogical 2008-12-22
  • 打赏
  • 举报
回复
这段代码 要得到网页的 编码格式。为了防止乱码

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧