如何抓取网页数据、分析并且去除Html标签C#(转载)
2010-12-18 14:34
741 查看
<@Aattention Content='本Blog原创文章,转载或引用请注明转载' From='Robby.cnblogs.com'@>
由于自己的搜索引擎中做到了这一块内容,所以今天说说如何抓取网页数据、分析并且去除Html标签,给大家提供一个参考。我的平台是Visual Studio2005,C#。
—————————————————————割—————————————————————————
首先将网页内容整个抓取下来,这个我就不说了,不是本次话题的重点。假设抓取的数据放在RecvBuffer这个byte[]中(数据从网络上传输过来时不是字符串的形式而是byte),那么我们的第一步就是将RecvBuffer转化为String,以便于对其操作,实例如下:
得到了数据的字符串形式,然后可以对网页进行解析了(其实就是对字符串的各种操作和正则表达式的应用)。下面我以几个例子来说明对网页数据的解析:
当然,这里只能识别一些基本的链接形式,像script中的链接和一些不带“”的链接都没有被支持,这个的扩展还是蛮简单的。
再举几个更简单点的解析的例子,大家学习学习:
—————————————————————割—————————————————————————
好了,下面说一下如何去除Html标签,这个想必有很多初学者很需要。其实还是正则表达式和字符串基本操作的应用,由于这个功能还是比较常用的,所以例子写成了函数,便于调用:
由于自己的搜索引擎中做到了这一块内容,所以今天说说如何抓取网页数据、分析并且去除Html标签,给大家提供一个参考。我的平台是Visual Studio2005,C#。
—————————————————————割—————————————————————————
首先将网页内容整个抓取下来,这个我就不说了,不是本次话题的重点。假设抓取的数据放在RecvBuffer这个byte[]中(数据从网络上传输过来时不是字符串的形式而是byte),那么我们的第一步就是将RecvBuffer转化为String,以便于对其操作,实例如下:
// 将接收到的数据增加到响应字符串中 strResponse += Encoding.ASCII.GetStringRecvBuffer, 0, nBytes;strResponse即是保存数据的字符串,此处用系统自带的System.Text.Encoding的方法转化 RecvBuffer,GetString的第一个参数RecvBuffer就是我们的原始数据,即包含需要解码的字节序列的字节数组;第二个参数0代表 第一个要解码的字节的索引,一般就从0开始;第三个参数nBytes为要解码的字节数,可以自己调整。
得到了数据的字符串形式,然后可以对网页进行解析了(其实就是对字符串的各种操作和正则表达式的应用)。下面我以几个例子来说明对网页数据的解析:
// 解析页面,查找链接 // 此处尚需扩展,还有某些形式的链接不被识别 string strRef = @'href|HREF|src|SRC|action|ACTION|Action[ ]*=[ ]*[''']['''#>]+[''']'; MatchCollection matches = new RegexstrRef.MatchesstrResponse; strStatus += '找到: '+matches.Count+' 个链接rn';上面的例子将网页中的链接解析出来,strRef变量表示了正则表达式的模式,变量matches表示符合匹配的项目的集合,后面的 RegexstrRef.MatchesstrResponse就是创建正则规则使得strResponse里符合strRef模式的字符串都返回。然后 调用matches的变量就可以取得各种信息了。
当然,这里只能识别一些基本的链接形式,像script中的链接和一些不带“”的链接都没有被支持,这个的扩展还是蛮简单的。
再举几个更简单点的解析的例子,大家学习学习:
//获取标题 Match TitleMatch = Regex.MatchstrResponse, '<title>[<]*</title>', RegexOptions.IgnoreCase | RegexOptions.Multiline; title = TitleMatch.Groups[1].Value; //获取描述信息 Match Desc = Regex.MatchstrResponse, '<Meta name='DESCRIPTION' content='[<]*'>', RegexOptions.IgnoreCase | RegexOptions.Multiline; strdesc = Desc.Groups[1].Value; //获取网页的大小 size = strResponse.Length;
—————————————————————割—————————————————————————
好了,下面说一下如何去除Html标签,这个想必有很多初学者很需要。其实还是正则表达式和字符串基本操作的应用,由于这个功能还是比较常用的,所以例子写成了函数,便于调用:
private string stripHtmlstring strHtml //把所有空格变为一个空格 Regex r = new Regex@'s+'; wordsOnly = r.ReplacestrResponse, ' '; wordsOnly.Trim;转自:http://hi.baidu.com/zzcc_8/blog/item/d600befb7cc7df1f6d22ebd1.html
相关文章推荐
- 如何抓取网页数据、分析并且去除Html标签(C#)
- 如何抓取网页数据、分析并且去除Html标签(C#)
- 如何抓取网页数据、分析并且去除Html标签(C#)
- 如何分析网页数据并且去除Html标签(C#)
- C#抓取网页数据、分析并且去除HTML标签(转载)
- 如何分析网页数据并且去除Html标签(C#)
- C#抓取网页数据、分析并且去除HTML标签
- 如何分析网页数据并且去除Html标签(C#)
- C#如何抓取网页数据、分析并且去除Html标签
- 如何分析网页数据并且去除Html标签(C#)
- C#抓取网页数据、分析并且去除HTML标签
- C#抓取网页数据、分析并且去除HTML标签
- C#抓取网页数据、分析并且去除HTML标签 【转】
- C#抓取网页数据 解析标题描述图片等信息 去除HTML标签
- HttpWebRequest WebBrowser抓取Web网页数据分析(c#)
- c#怎样抓取html网页数据
- c# 抓取Web网页数据分析
- C#获取网页源代码,去除html标签,提取文字源码
- c# 抓取Web网页数据分析
- C#网页抓取数据分析