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


猜你喜欢
- 写入Excel中后有显示第一列客户款号总库存这些,开始写在第12行第一列开始写入,一行写入5个,然后再隔12行,再写入下边的数据,图片需要对
- 不同的是setInterval会每隔指定的时间段就执行一次代码,具有重复性。而setTimeout只会调用后执行一次。 下面通过函数的建立和
- join toString该两种方法会将数组元素的类型转换为字符串var arr = [1, [2, [3, [4, 5]]], 6];co
- 忘记密码是一件很头疼的事情,mac安装mysql初始密码忘记怎么办?具体解决办法如下http://dev.mysql.com/doc/ref
- 对于如何结束一个Python程序或者用Python操作去结束一个进程等,Python本身给出了好几种方法,而这些方式也存在着一些区别,对相关
- 引言您是否能编写命令行工具?也许您可以,但您能编写出真正好用的命令行工具吗?本文讨论使用 Python 来创建一个强健的命令行工具,并带有内
- 使用MySQL8,在整合ssm框架,用mybatis逆向工程生成的代码测试时,执行到数据库查询前均正常,但进行查询时,便卡主没有反应了,设置
- 原理就是通过离开页面行为时间onunload触发时间去检测此时的浏览器的窗口大小,根据大小由此判断用户是刷新,跳转或是关闭行为程序 
- 说完了理论,我们来做点实事。这篇文章将介绍使用 Javascript 实现的动画组件。下面记录下当时编写这个组件的考虑的些问题,对技术细节感
- 这篇文章主要介绍了python线程join方法原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋
- 代码如下:<% sql="select * from serr where
- freeze翻译成汉语有冻结的意思使用 ,Object.freeze()是ES5新增的特性,可以冻结一个对象,这会阻止修改现有的属性,也意味
- 关联2张表时出现了无法创建外键的情况,从这个博客看到,问题出在第六点的Charset和Collate选项在表级和字段级上的一致性上。我的2张
- 一.雅黑设计理念 雅黑字体是为微软公司设计的屏幕显示汉字。它具有个性独特、结体优美、识别性强、块状效果好、显示清晰等优点。在当今数字化时代更
- 一、Python介绍从我开始学习Python时我就决定维护一个经常使用的“窍门”列表。不论何时当我看到一段让我觉得“酷,这样也行!”的代码时
- 前言字典为动词“to yield”给出了两个释义:产出和让步。对于 Python 生成器中的 yie
- 原来看到这个代码的时候,觉得功能不错,调试并整理了一下也许大家用的到,对于越来越注重用户体验的今天,这种功能一定很受欢迎,当然本例子只是一个
- 为了更好的理解这些基本操作,下面会通过读取一个股票数据,来进行Pandas基本数据操作的语法介绍。# 读取文件(读取保存文件后面会专门进行讲
- 本文实例讲述了Python对切片命名清除索引的方法。分享给大家供大家参考,具体如下:问题:如何清理掉到处都是硬编码的切片索引解决方案:对切片
- 登录与注册两个按钮似乎天生就应该是排在一起的,就像很多地方的“确定”与“取消”一样,甚至排在一起的意义远远强于后者。于是长期以来,用户们也形