用正则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 (四) jQuery中操作元素的属性与样式
Feb 23 Javascript
JavaScript中的作用域链和闭包
Jun 30 Javascript
javascript 获取iframe里页面中元素值的方法
Feb 17 Javascript
jQuery中slideUp 和 slideDown 的点击事件
Feb 26 Javascript
javascript模块化简单解析
Apr 07 Javascript
jQuery实现下拉菜单(内容为时间)的实时更新及图表的随动更新的方法
Jul 07 Javascript
最好用的Bootstrap fileinput.js文件上传组件
Dec 12 Javascript
Bootstrap模态框使用详解
Feb 15 Javascript
canvas轨迹回放功能实现
Dec 20 Javascript
vue 移动端适配方案详解
Nov 15 Javascript
Vue中UI组件库之Vuex与虚拟服务器初识
May 07 Javascript
vue实现select下拉显示隐藏功能
Sep 30 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
SSI指令
2006/11/25 PHP
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
2011/07/18 PHP
PHP5函数小全(分享)
2013/06/06 PHP
php Xdebug的安装与使用详解
2013/06/20 PHP
从零开始学YII2框架(二)通过 Composer 安装扩展插件
2014/08/20 PHP
PHP实现字符串大小写转函数的功能实例
2019/02/06 PHP
安装PHP扩展时解压官方 tgz 文件后没有configure文件无法进行配置编译的问题
2020/08/26 PHP
jQuery 性能优化指南(2)
2009/05/21 Javascript
javascript Firefox与IE 替换节点的方法
2010/02/24 Javascript
ExtJS 下拉多选框lovcombo
2010/05/19 Javascript
关于flash遮盖div浮动层的解决方法
2010/07/17 Javascript
JQERY limittext 插件0.2版(长内容限制显示)
2010/08/27 Javascript
Jquery实现简单的动画效果代码
2012/03/18 Javascript
如何在MVC应用程序中使用Jquery
2014/11/17 Javascript
javascript限制用户只能输汉字中文的方法
2014/11/20 Javascript
EasyUi datagrid 实现表格分页
2015/02/10 Javascript
JS实现往下不断流动网页背景的方法
2015/02/27 Javascript
使用angularjs创建简单表格
2016/01/21 Javascript
在vue中使用Autoprefixed的方法
2018/07/27 Javascript
详解angular2 控制视图的封装模式
2018/12/27 Javascript
Layui Form 自定义验证的实例代码
2019/09/14 Javascript
python的tkinter布局之简单的聊天窗口实现方法
2014/09/03 Python
django 微信网页授权认证api的步骤详解
2019/07/30 Python
python 协程中的迭代器,生成器原理及应用实例详解
2019/10/28 Python
基于Django OneToOneField和ForeignKey的区别详解
2020/03/30 Python
python3通过subprocess模块调用脚本并和脚本交互的操作
2020/12/05 Python
浅谈h5自定义audio(问题及解决)
2016/08/19 HTML / CSS
详解html5 shiv.js和respond.min.js
2018/01/24 HTML / CSS
简述Html5 IphoneX 适配方法
2018/02/08 HTML / CSS
玩具反斗城葡萄牙官方商城:Toys"R"Us葡萄牙
2016/10/21 全球购物
大学生先进事迹材料
2014/02/16 职场文书
学校综治宣传月活动总结
2014/07/02 职场文书
警察正风肃纪剖析材料
2014/10/16 职场文书
先进党员事迹材料
2014/12/24 职场文书
门卫岗位职责
2015/02/09 职场文书
功夫熊猫观后感
2015/06/10 职场文书