WebClient的超级怪问题

xfekin 2004-03-23 03:12:03
我用WebClient来获取远程网页的数据,并用正则匹配来取得需要的数据,现在遇到个超级怪问题,是这样的
抓http://www.xicn.net/joke/special/gxsy.php?page=1这个页面的时候,内容可以抓去,但是正则明明是对的,就是不出需要的内容,后来我把抓去的内容保存再一个TXT文件中,读取然后匹配,这下OK了,文件大小是22.4K,然后我又用WebClient来把这个页面保存倒硬盘上,大小是22.1K,如果直接读取这个22。1k的文件,是匹配不出结果的,但是如果建个新文件,再把这个22。1k的文件内容复制倒刚才建的文件里面,这个时候该文件的大小是22。4k,可以匹配,同样的方法来抓别的网页又是正常的,百思不得其解,望高手们解我心中谜团。
...全文
25 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
saucer 2004-03-24
  • 打赏
  • 举报
回复
the result is same except some missing newlines, also why
(?<text>.[^\x01]*?)

??

can you try
string pattern = @"<table width=\""100%\"" border=\""0\"" cellspacing=\""8\"" cellpadding=\""8\"">(?<text>.*?)<TD COLSPAN=10><BR>";
Regex re = new Regex(pattern, RegexOptions.Singleline | RegexOptions.IgnoreCase);
xfekin 2004-03-24
  • 打赏
  • 举报
回复
内容的确和我截取的一样,你尝试用正则来匹配中间图片列表的那部分。
pattern = @" <table width=\""100%\"" border=\""0\"" cellspacing=\""8\"" cellpadding=\""8\"">(?<text>.[^\x01]*?)<TD COLSPAN=10><BR>";
上面是我的匹配规则,你可以分别用程序下载把内容保存到文件,然后在手动复制内容保存到文件(注:要新建文件方可)然后看看他们的匹配结果是否相同。
saucer 2004-03-24
  • 打赏
  • 举报
回复
what if you use a page like

<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Net" %>
<script language="C#" runat="server">
void Page_Load(Object sender, EventArgs e)
{
string Url = "http://www.xicn.net/joke/special/gxsy.php?page=1";
WebClient client = new WebClient();
Stream stream = client.OpenRead(Url);
StreamReader sr = new StreamReader(stream,System.Text.Encoding.GetEncoding("GB2312"));
Response.Write(sr.ReadToEnd());
sr.Close();
}
</script>

看内容是否确实是你想象的那样
xfekin 2004-03-24
  • 打赏
  • 举报
回复
获取内容是用这个
public static string GetRemoteData(string Url)
{
WebClient client = new WebClient();
Stream stream = client.OpenRead(Url);
StreamReader sr = new StreamReader(stream,System.Text.Encoding.GetEncoding("GB2312"));
return sr.ReadToEnd();
}

下载文件是用这个
public static void GetRemoteFile(string Url,string LocalFile)
{
WebClient client = new WebClient();
client.DownloadFile(Url,System.Web.HttpContext.Current.Server.MapPath(LocalFile));
}

目前只发现http://www.xicn.net/joke/special/gxsy.php?page=1这个页面出问题,其他网站的都挺好
saucer 2004-03-24
  • 打赏
  • 举报
回复
how are you calling? are you converting the bytes[] into a string with System.Text.Encoding.GetEncoding("GB2312")?
xfekin 2004-03-24
  • 打赏
  • 举报
回复
编码用得都是GB2312
stlwj 2004-03-23
  • 打赏
  • 举报
回复
用xmlhttp吧
八爪鱼-杭州 2004-03-23
  • 打赏
  • 举报
回复
应该是编码的问题

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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