asp远程网页数据采集常用函数代码
发布时间:2008-10-31 12:44:00
下面列出了asp远程网页数据采集程序中经常用到的函数,很实用,特别是正则表达式过滤函数。包括了使用xmlhttp采集远程网页内容,使用adodb.stream转换编码,内容过滤匹配等等..
数据采集程序
On Error Resume Next
Server.Scripttimeout=300
'采集远程数据
Function getHTTPData(url)
dim http
set http=Server.createobject("Msxml2.XMLHTTP")
if instr(url,"http://")=0 then url="http://"&url
Http.open "GET",url,false
Http.send()
if Http.Status<>200 then exit function
getHTTPData=bytesToBSTR(Http.responseBody,"UTF-8")
set http=nothing
if err.number<>0 then err.Clear
sCharset=""
End function
'网页编码转换
Function BytesToBstr(body,Cset)
dim objstream
set objstream = Server.CreateObject("adodb.stream")
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.Write body
objstream.Position = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Close
set objstream = nothing
End Function
'---------------------------------------------------------------------
'服务器登录
Function login(url)
dim http
set http=Server.createobject("Msxml2.XMLHTTP")
if instr(url,"http://")=0 then url="http://"&url
Http.open "GET",url,false
Http.send()
if Http.Status<>200 then exit function
set http=nothing
if err.number<>0 then err.Clear
End function
'---------------------------------------------------------------------
'正则替换
Function ReplaceText(fString,patrn, replStr)
Set regEx = New RegExp
regEx.Pattern = patrn
regEx.IgnoreCase = True
regEx.Global = True
ReplaceText = regEx.Replace(fString, replStr)
End Function
'---------------------------------------------------------------------
'去标签 包括内容
Function ReplaceTag(str, tag)
Set regEx = New RegExp
regEx.Pattern = "<"&tag&"[^>]*?>.*?<\/"&tag&">"
regEx.IgnoreCase = True
regEx.Global = True
ReplaceTag=regEx.Replace(str, "")
End Function
'---------------------------------------------------------------------
'去标签 不包括内容
Function ReplaceTab(str, tag)
Set regEx = New RegExp
regEx.Pattern = "<\/?"&tag&"[^>]*>"
regEx.IgnoreCase = True
regEx.Global = True
ReplaceTab=regEx.Replace(str, "")
End Function
'---------------------------------------------------------------------
'去标签属性 保留标签
Function ReplaceinnerTag(str, tag)
Set regEx = New RegExp
regEx.Pattern = "(<\/?"&tag&")[^>]*>"
regEx.IgnoreCase = True
regEx.Global = True
ReplaceinnerTag=regEx.Replace(str, "$1>")
End Function
'---------------------------------------------------------------------
'按正则取数据
Function getText(fString, patrn,n)
dim Matches, tStr
tStr = fString
Set re = New Regexp
re.IgnoreCase = True
re.Global = True
re.Pattern = patrn
set Matches = re.Execute(tStr)
set re = nothing
rStr = ""
For Each Match in Matches
rStr = Match.SubMatches(n)
exit for
Next
getText = rStr
End Function
'---------------------------------------------------------------------
'数据过滤
Function Encode_text(str)
If Isnull(str) Then
Encode_text = ""
Exit Function
End If
str = ReplaceText(str, "<\/?br[^>]*>" , vbCrlf )
str = ReplaceText(str, "<\/?p[^>]*>" , vbCrlf )
str = ReplaceTab(str, "[a-zA-Z]")
str = ReplaceText(str, "\n\s*\r" ,Chr(10)&Chr(13))
str = Replace(str, "&" , "&" )
str = Replace(str, ";" , ";" )
str = Replace(str, "&" , "&" )
str = Replace(str,Chr(34), """ )
str = Replace(str, "'" , "'" )
str = Replace(str, "<" , "<" )
str = Replace(str, ">" , ">" )
str = Replace(str, "(" , "(" )
str = Replace(str, ")" , ")" )
str = Replace(str, "*" , "*" )
str = Replace(str, "%" , "%" )
str = Replace(str,vbCrlf, "<br/>" )
Encode_text = str
End Function
'---------------------------------------------------------------------
'通过Matches取数据
dim Matches
sub setMatches(str,sRe)
Set re = New Regexp
re.IgnoreCase = True
re.Global = True
re.Pattern = sRe
set Matches = re.Execute(str)
set re=nothing
end sub
'例子
call setMatches(textcontent, re)
For Each Match in Matches
response.write Match.value
Next
猜你喜欢
- 1.在查询分析器理启动或停止SQL Agent服务启动:use mastergoxp_cmdshell 'net start SQL
- COM接口VC实现,接口: [id(1), helpstring("method Test"
- 工作中遇到一个很棘手的问题,交互设计师和视觉设计师在做出高保真原型后提交给前端开发工程师,最后得到的web产物从细节上和布局上都和高保真原型
- 用法: 按住鼠标左键拖拽一个框后释放洗洗睡了<!DOCTYPE html public "-//W3C//DTD XHTML
- 客户端程序编写免不了经常接触XMLHttpRequest对象。微软的XHR实现的progid又是一串一串的。 烦人。抽一个中午时间,找了找资
- 一.背景在现在的网站中,接入的渠道是越来越多了,技术也是越来越先进,WAP, SMS,EMAIL, 传统的Web, Socket等等,如果连
- 经典鼠标控制左右滚动,图片间隔无缝滚动,悬停滚动,图片控制左右滚动JavaScript代码<!DOCTYPE html PUBLIC
- 数据库文件在使用过程中,日志文件会越来越大。小则几个G,大的可能几十上百G都有可能,有时实在是没有必要为它浪费太大的硬盘存储空间。所以可以把
- 你知道(X)HTML中最多余的标签中是什么吗?在我看来就是这个<a>标签,不错,就是每个网站使用最多的超级链接标签<a&g
- 前一阵看到一篇文章《使用css3仿造window7的开始菜单》,文中仅使用CSS3 实现了Windows 7 开始菜单的动态效果,很久以来一
- 这几天不是很忙,就找了些拖动布局方面的资料看看,也学着写了个拖动布局的效果,没想到花了好多时间,七拼八凑,总算是把这个效果写出来了。哎!还是
- 在IE7还不支持counter 和increment 属性之前,我从来没有用过它们,也从来没有使用过:before 伪元素和content
- AdobeAdobe公司的标识1982年,40多岁的程序员约翰·沃诺克(John Warnock)和查尔斯·杰斯克(Charles Gesc
- 首先,创建一个存储过程 get_clob:t_name:要查询的表名;f_name:要查询的字段名;u_id:表的主键,查询条件;l_pos
- 但是Class这个东西,如果用得比较少,充其量只是一个大模块的包装方式. 只有大规模地用它来开发,才能显出它对项目管理的优越性来. 所谓的意
- 1.函数array() 功能:创建一个数组变量 格式:array(list) 参数:list为数组变量中的每个数值列,中间用逗号间隔 例子:
- 登录页面能访问得到,但当执行下级目录的文件就不行了,浏览器直接跳出以下错误页面: 除些以外没有任何其它有价值的信息,因为此网站在我的电脑上执
- 先看一段HTML代码,在下边这段代码中,这张图片的宽度未知,我想写在CSS中写一行限制最大宽度为50px:<div id=&
- 一 安装oracle数据库成功之后,会显示相关的数据库信息: 全局数据库名:oracle 系统标识符(SID):oracle 服务器参数文件
- 相信为数不少的系统管理员每天都在做着同一样的工作——对数据进行备份。一旦哪一天疏忽了,而这一天系统又恰恰发生了故障,需要进行数据恢复,那么此