1 string url = "http://sports.sina.com.cn/o/2015-08-19/doc-ifxfxraw8933245.shtml"; 2 WebClient wc = new WebClient(); 3 Stream st = wc.OpenRead(url); 4 StreamReader sr = new StreamReader(st); 5 string res = sr.ReadToEnd(); 6 sr.Close(); 7 st.Close(); 8 9 //开始正则表达式替换 10 res = Regex.Replace(res, @"(.*)", "1", RegexOptions.Multiline); 11 12 13 Console.WriteLine(res); 14 Console.ReadKey();
这个是一个获取指定网址页面的源代码的c#代码。这只是获取整个网页的源码,如何获取指定xpath的源码呢?例如只获取//div[@class="conten"]这个xpath内的源码?如何写呢?另外,为什么上面这段代码执行之后返回的结果会是很多的1,而不是只有1个1呢?如图:
这是我在正则表达式工具测试的结果。为什么不一样?
1 // 匹配正文内容 2 string html = Regex.Match(res, @"<!-- 正文内容 begin -->([\s\S]*)<!-- 正文内容 end -->").Groups[0].Value; 3 4 //开始正则表达式替换 5 res = Regex.Replace(html, "亨特", "奥尔良", RegexOptions.Multiline); 6 7 Console.WriteLine(res); 8 Console.ReadKey();
非常感谢。不过用了你的代码,怎么什么内容也没有返回呢?如图
@G善源:
编码不对,网站用的编码是GB2312,C#默认使用的编码是UTF-8,所以你下下来的内容会出现中午乱码的情况,转一下编码即可
StreamReader sr = new StreamReader(st, Encoding.GetEncoding("GB2312"));
这个正则可以替换就出鬼了
建议用 HtmlAgilityPack 框架来处理html.