用正则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 相关文章推荐
判断脚本加载是否完成的方法
May 26 Javascript
jQuery.query.js 取参数的两点问题分析
Aug 06 Javascript
js 判断文件类型并控制表单提交示例代码
Nov 14 Javascript
JavaScript静态类型检查工具FLOW简介
Jan 06 Javascript
jquery实现图片水平滚动效果代码分享
Aug 26 Javascript
利用jQuery来动态为属性添加或者删除属性的简单方法
Dec 02 Javascript
canvas绘制的直线动画
Jan 23 Javascript
Angularjs的键盘事件的绑定
Jul 27 Javascript
详解webpack提取第三方库的正确姿势
Dec 22 Javascript
详解webpack的proxyTable无效的解决方案
Jun 15 Javascript
React 项目迁移 Webpack Babel7的实现
Sep 12 Javascript
node.js中express模块创建服务器和http模块客户端发请求
Mar 06 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
迅速确定php多维数组的深度的方法
2014/01/07 PHP
关于js和php对url编码的处理方法
2014/03/04 PHP
PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
2014/08/28 PHP
Yii框架实现邮箱激活的方法【数字签名】
2016/10/18 PHP
读jQuery之三(构建选择器)
2011/06/11 Javascript
javascript中文本框中输入法切换的问题
2013/12/10 Javascript
使用postMesssage()实现iframe跨域页面间的信息传递
2016/03/29 Javascript
angular过滤器实现排序功能
2017/06/27 Javascript
bootstrap表格内容过长时用省略号表示的解决方法
2017/11/21 Javascript
Angular实现的内置过滤器orderBy排序与模糊查询功能示例
2017/12/29 Javascript
JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍
2018/03/01 Javascript
node.js博客项目开发手记
2018/03/16 Javascript
搭建一个nodejs脚手架的方法步骤
2019/06/28 NodeJs
layer插件实现在弹出层中弹出一警告提示并关闭弹出层的方法
2019/09/24 Javascript
[01:02]DOTA2上海特锦赛SHOWOPEN
2016/03/25 DOTA
[01:38]【DOTA2亚洲邀请赛】Sumail——梦开始的地方
2017/03/03 DOTA
[49:05]OG vs Newbee 2019DOTA2国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
编写Python脚本批量下载DesktopNexus壁纸的教程
2015/05/06 Python
Python实现PS滤镜Fish lens图像扭曲效果示例
2018/01/29 Python
python实现守护进程、守护线程、守护非守护并行
2018/05/05 Python
pytorch cnn 识别手写的字实现自建图片数据
2018/05/20 Python
使用python将大量数据导出到Excel中的小技巧分享
2018/06/14 Python
启动Atom并运行python文件的步骤
2018/11/09 Python
Django中如何使用sass的方法步骤
2019/07/09 Python
python爬虫豆瓣网的模拟登录实现
2019/08/21 Python
使用python实现希尔、计数、基数基础排序的代码
2019/12/25 Python
PythonPC客户端自动化实现原理(pywinauto)
2020/05/28 Python
在Keras中利用np.random.shuffle()打乱数据集实例
2020/06/15 Python
荷叶圆圆教学反思
2014/02/01 职场文书
向领导表决心的话
2014/03/11 职场文书
社区党建工作汇报材料
2014/08/14 职场文书
青涩记忆观后感
2015/06/18 职场文书
升职感谢领导的话语及升职感谢信
2019/06/24 职场文书
2019毕业论文致谢词
2019/06/24 职场文书
导游词幽默开场白
2019/06/26 职场文书
六年级作文之自救
2019/12/19 职场文书