如何抓取网页数据、分析并且去除Html标签(C#)
<@Aattention Content="本Blog原创文章,转载或引用请注明转载"
from="Robby.cnblogs.com"@>
由于自己的搜索引擎中做到了这一块内容,所以今天说说如何抓取网页数据、分析并且去除Html标签,给大家提供一个参考。我的平台是Visual
Studio2005,C#。
—————————————————————割—————————————————————————
首先将网页内容整个抓取下来,这个我就不说了,不是本次话题的重点。假设抓取的数据放在RecvBuffer这个byte[]中(数据从网络上传输过来时不是字符串的形式而是byte),那么我们的第一步就是将RecvBuffer转化为String,以便于对其操作,实例如下:
//
将接收到的数据增加到响应字符串中
strResponse
+=
Encoding.ASCII.GetString(RecvBuffer,
0
, nBytes);
strResponse即是保存数据的字符串,此处用系统自带的System.Text.Encoding的方法转化RecvBuffer,GetString的第一个参数RecvBuffer就是我们的原始数据,即包含需要解码的字节序列的字节数组;第二个参数0代表第一个要解码的字节的索引,一般就从0开始;第三个参数nBytes为要解码的字节数,可以自己调整。
得到了数据的字符串形式,然后可以对网页进行解析了(其实就是对字符串的各种操作和正则表达式的应用)。下面我以几个例子来说明对网页数据的解析:
//
解析页面,查找链接
//
此处尚需扩展,还有某些形式的链接不被识别
string
strRef
=
@"
(href|HREF|src|SRC|action|ACTION|Action)[ ]*=[ ]*[""'][^""'#>]+[""']
"
;
MatchCollection matches
=
new
Regex(strRef).Matches(strResponse);
strStatus
+=
"
相关文档:
首先了解一下什么是Qname
下面是一篇写的比较好的关于Qname的介绍:
http://blog.csdn.net/fbysss/archive/2007/06/24/1664076.aspx
可见Qname主要是处理namesapce的,是指具有特定前缀的xml element。而且Qname就是QualifiedName的缩写,所以Qname在C#中对应的应该是XmlQualifiedName这个类 ......
一种:
<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>兼容FireFox的当前时间的JS脚本</title>
</head>
<body>
<DIV id=time>当前时间
<SCRIPT>document.getElementById('time').innerHTML=new Date().toLo ......
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
Go
----截取字符串,并出去html
create FUNCTION [dbo].[CutString] (@str varchar(1000),@length int)
RETURNS varchar(1000) AS
BEGIN
declare @mainstr varchar(1000)
declare @substr varchar(1000)
if(@str is not null or @st ......