用正则xmlHttp实现的偷(转)


Posted in Javascript onJanuary 22, 2007
<%  
'========================================  
class EngineerSearch  
'老龙:laolong9999@sina.com  
':模拟XML获取http标记资源(用过之后就知道为什么XML有用:))  
'利用引擎搜索(显示引擎信息或其超连接网站上的信息或直接一个指定页面的相关信息,利用正则和xmlHttp,  
'程序的使用需要会构造正则)  
'---------------------------------------------------------------  
private oReg,oxmlHttp'一个正则,一个微软xmlhttp  
'---------------------------------------------------------------  
public sub class_initialize()'对象建立触发  
set oReg=new regExp  
oReg.Global=true  
oReg.IgnoreCase=true  
set oXmlHttp=server.createobject("Microsoft.XmlHttp")  
end sub  
'---------------------------------------------------------------  
public sub class_terminate()'对象销毁触发  
set oReg=nothing'必须手动释放class内的自建对象,asp只自动释放由class定义的对象  
set oXmlHttp=nothing  
If typename(tempReg)<>"nothing" then'方法体内的对象释放资源  
set tempReg=nothing  
end if  
end sub  
'---------------------------------------------------------------  
'引擎级搜索  
public function engineer(url,EngineerReg)  
'功能介绍:获得url的返回信息(通常用于引擎查找),提取其中的EngineerReg的特定信息,返回matches集合到  
'函数名。获得url查询结果,搜寻出用engineerReg正则定义的结果,生成一个matches集合,  
'由于无法建立集合及操作集合个数(vbscript),最好再自己遍历集合,也可以考虑二维数组  
dim strConent  
strContent=oXmlHttp.open("get",url,false)  
on error resume next  
oXmlHttp.send()  
if err.number<>0 then  
exit function  
end if  
strContent=bytes2BSTR(oXmlHttp.responseBody)  
if isnull(EngineerReg) then  
engineer=AbsoluteURL(strContent,url)  
else  
oReg.Pattern=EngineerReg  
set engineer=oReg.Execute(AbsoluteURL(strContent,url))   
end if  
end function  
'---------------------------------------------------------------  
'汉字编码,(网人)  
public Function bytes2BSTR(vIn)   
strReturn = ""   
For i = 1 To LenB(vIn)   
ThisCharCode = AscB(MidB(vIn,i,1))   
If ThisCharCode < &H80 Then   
strReturn = strReturn & Chr(ThisCharCode)   
Else   
NextCharCode = AscB(MidB(vIn,i+1,1))   
strReturn = strReturn & Chr (CLng(ThisCharCode) * &H100 + CInt(NextCharCode))   
i = i + 1   
End If   
Next   
bytes2BSTR = strReturn   
End Function  
'---------------------------------------------------------------  
public Function SearchReplace(strContent,ReplaceReg,ResultReg)  
'替换,将strContent中的replaceReg描述的字符串用resultReg描述的替换,返回到searchReplace去  
'将正则的replace封装了。  
oReg.Pattern=ReplaceReg  
SearchReplace=oReg.replace(strContent,ResultReg)  
End Function  
'---------------------------------------------------------------  
public Function AbsoluteURL(strContent,byval url)  
'将strContent中的相对URL变成oXmlHttp中指定的url的绝对地址(http/https/ftp/mailto:)  
'正则可以修改修改。  
dim tempReg  
set tempReg=new RegExp  
tempReg.IgnoreCase=true  
tempReg.Global=true  
tempReg.Pattern="(^.*\/).*$"'含文件名的标准路径http://www.wrclub.net/default.aspx  
Url=tempReg.replace(url,"$1")  
tempReg.Pattern="((?:src|href).*?=[\'\u0022](?!ftp|http|https|mailto))"  
AbsoluteURL=tempReg.replace(strContent,"$1"+Url)  
set tempReg=nothing  
end Function  
'---------------------------------------------------------------  
end class  
'========================================  
%>  
<%'例子  
Response.CharSet = "GB2312"   
dim mySearch   
set mySearch=new EngineerSearch  
'URL一定是包含文件扩展名的完整地址,结果是集合,集合中的每个项目是数组,应该这样引用子查询:myMatches(0).subMatches(0)  
set myMatches=mySearch.engineer("http://www.wrclub.net/default.aspx","<img.*?>")  
if myMatches.count=0 Then  
response.write "没有你正则的字符串"  
end if  
if myMatches.count>0 then  
response.write myMatches.count&"<br>"  
for each key in myMatches  
response.write key.firstindex&":"&cstr(key.value)&"<br>"  
next  
end if  
%>  <br><b>更诸多的应用,只要你会正则</b> 
Javascript 相关文章推荐
jquery keypress,keyup,onpropertychange键盘事件
Jun 25 Javascript
jquery实现加载等待效果示例
Sep 25 Javascript
javascript实现的一个带下拉框功能的文本框
May 08 Javascript
Bootstrap基本组件学习笔记之面板(14)
Dec 08 Javascript
文件上传的几个示例分享【推荐】
Dec 16 Javascript
json数据处理及数据绑定
Jan 25 Javascript
JS 验证密码 不能为空,必须含有数字、字母、特殊字符,长度在8-12位
Jun 21 Javascript
在vue项目中集成graphql(vue-ApolloClient)
Sep 08 Javascript
微信小程序实现通过双向滑动缩放图片大小的方法
Dec 30 Javascript
微信小程序换肤功能实现代码(思路详解)
Aug 25 Javascript
Vue前端判断数据对象是否为空的实例
Sep 02 Javascript
微信小程序实现锚点跳转
Nov 23 Javascript
通过MSXML2自动获取QQ个人头像及在线情况(给初学者)
Jan 22 #Javascript
Javascript技术技巧大全(五)
Jan 22 #Javascript
深入认识JavaScript中的函数
Jan 22 #Javascript
Ajax::prototype 源码解读
Jan 22 #Javascript
showModalDialog 和 showModelessDialog
Jan 22 #Javascript
javascript 中对象的继承〔转贴〕
Jan 22 #Javascript
利用javascript中的call实现继承
Jan 22 #Javascript
You might like
ThinkPHP无限级分类原理实现留言与回复功能实例
2014/10/31 PHP
Laravel搭建后台登录系统步骤详解
2016/07/26 PHP
Yii2 批量插入、更新数据实例
2017/03/15 PHP
Laravel学习教程之从入口到输出过程详解
2017/08/27 PHP
Laravel框架实现利用监听器进行sql语句记录功能
2018/06/06 PHP
jQuery 技巧大全(新手入门篇)
2009/05/12 Javascript
jquery提升性能最佳实践小结
2010/12/06 Javascript
使用jQuery实现的掷色子游戏动画效果
2014/03/14 Javascript
简介AngularJS的视图功能应用
2015/06/17 Javascript
Node.js事件驱动
2015/06/18 Javascript
Javascript自执行匿名函数(function() { })()的原理浅析
2016/05/15 Javascript
JS获取input file绝对路径的方法(推荐)
2016/08/02 Javascript
javascript 使用正则test( )第一次是 true,第二次是false
2017/02/22 Javascript
详解React-Native解决键盘遮挡问题(Keyboard遮挡问题)
2017/07/13 Javascript
vue移动端html5页面根据屏幕适配的四种解决方法
2018/10/19 Javascript
jquery 时间戳转日期过程详解
2019/10/12 jQuery
[46:44]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
Python简单删除目录下文件以及文件夹的方法
2015/05/27 Python
Python中遇到的小问题及解决方法汇总
2017/01/11 Python
python分割列表(list)的方法示例
2017/05/07 Python
python调用xlsxwriter创建xlsx的方法
2018/05/03 Python
TensorFlow用expand_dim()来增加维度的方法
2018/07/26 Python
详解python路径拼接os.path.join()函数的用法
2019/10/09 Python
pycharm内无法import已安装的模块问题解决
2020/02/12 Python
Python使用docx模块实现刷题功能代码
2020/02/13 Python
Anconda环境下Vscode安装Python的方法详解
2020/03/29 Python
django queryset相加和筛选教程
2020/05/18 Python
Python实现列表索引批量删除的5种方法
2020/11/16 Python
MoviePy简介及Python视频剪辑自动化
2020/12/18 Python
python读取图片颜色值并生成excel像素画的方法实例
2021/02/19 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
2021/03/04 Python
美国祛痘、抗衰老药妆品牌:Murad
2016/08/27 全球购物
简单介绍Object类的功能、常用方法
2013/10/02 面试题
公务员培训自我鉴定
2014/02/01 职场文书
县委党的群众路线教育实践活动工作情况报告
2014/10/25 职场文书
golang 实现时间戳和时间的转化
2021/05/07 Golang