首页 新闻 会员 周边

c#如何获取网页源代码并通过xpath获取指定标签,对标签内的内容进行正则替换![附未完成代码]

0
悬赏园豆:30 [已解决问题] 解决于 2015-09-21 12:32
 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呢?如图:

这是我在正则表达式工具测试的结果。为什么不一样?

 

正则表达式测试结果

G善源的主页 G善源 | 初学一级 | 园豆:91
提问于:2015-08-19 17:51
< >
分享
最佳答案
0
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();
收获园豆:30
wadesss | 初学一级 |园豆:194 | 2015-08-19 19:34

非常感谢。不过用了你的代码,怎么什么内容也没有返回呢?如图无返回内容!

G善源 | 园豆:91 (初学一级) | 2015-08-20 15:59

@G善源: 

编码不对,网站用的编码是GB2312,C#默认使用的编码是UTF-8,所以你下下来的内容会出现中午乱码的情况,转一下编码即可

StreamReader sr = new StreamReader(st, Encoding.GetEncoding("GB2312"));

wadesss | 园豆:194 (初学一级) | 2015-08-21 09:20
其他回答(2)
0

这个正则可以替换就出鬼了

稳稳的河 | 园豆:4216 (老鸟四级) | 2015-08-19 18:01
0

建议用 HtmlAgilityPack 框架来处理html.

mycing | 园豆:197 (初学一级) | 2015-08-30 20:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册