用正则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下attr和removeAttr的使用方法
Dec 28 Javascript
简单实例处理url特殊符号&amp;处理(2种方法)
Apr 02 Javascript
JS操作Cookie写入和读取实例代码
Oct 20 Javascript
js 判断js函数、变量是否存在的简单示例代码
Mar 04 Javascript
IE6-8中Date不支持toISOString的修复方法
May 04 Javascript
javascript生成img标签的3种实现方法(对象、方法、html)
Dec 25 Javascript
node.js 中国天气预报 简单实现
Jun 06 Javascript
jQuery dateRangePicker插件使用方法详解
Jul 28 jQuery
Vue 引入AMap高德地图的实现代码
Apr 29 Javascript
layer ui 导入文件之前传入数据的实例
Sep 23 Javascript
从表单校验看JavaScript策略模式的使用详解
Oct 17 Javascript
gojs实现蚂蚁线动画效果
Feb 18 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导出csv格式数据并将数字转换成文本的思路以及代码分享
2014/06/05 PHP
PHP提高编程效率的20个要点
2015/09/23 PHP
WordPress开发中用于标题显示的相关函数使用解析
2016/01/07 PHP
PHP实现自动识别原编码并对字符串进行编码转换的方法
2016/07/13 PHP
php屏蔽错误及提示的方法
2020/05/10 PHP
JavaScript中URL编码函数代码
2011/01/11 Javascript
用js调用迅雷下载代码的二种方法
2013/04/15 Javascript
如何将网页表格内容导入excel
2014/02/18 Javascript
JS 删除字符串最后一个字符的实现代码
2014/02/20 Javascript
基于NodeJS的前后端分离的思考与实践(六)Nginx + Node.js + Java 的软件栈部署实践
2014/09/26 NodeJs
js文本框输入内容智能提示效果
2015/12/02 Javascript
AngularJS实现全选反选功能
2015/12/08 Javascript
浅谈JS验证表单文本域输入空格的问题
2017/02/14 Javascript
nodejs个人博客开发第六步 数据分页
2017/04/12 NodeJs
vue2.0 keep-alive最佳实践
2017/07/06 Javascript
web前端vue之CSS过渡效果示例
2018/01/10 Javascript
在vue项目中优雅的使用SVG的方法实例详解
2018/12/03 Javascript
微信小程序绑定手机号获取验证码功能
2019/10/22 Javascript
vue 更改连接后台的api示例
2019/11/11 Javascript
vue.js 解决v-model让select默认选中不生效的问题
2020/07/28 Javascript
python中引用与复制用法实例分析
2015/06/04 Python
python 调用HBase的简单实例
2016/12/18 Python
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04
2018/06/26 Python
django+tornado实现实时查看远程日志的方法
2019/08/12 Python
python中seaborn包常用图形使用详解
2019/11/25 Python
python之array赋值技巧分享
2019/11/28 Python
PyQt5高级界面控件之QTableWidget的具体使用方法
2020/02/23 Python
Python多线程正确用法实例解析
2020/05/30 Python
html5 offlline 缓存使用示例
2013/06/24 HTML / CSS
香港零食网购:上仓胃子
2020/06/08 全球购物
会计实习自我鉴定
2013/12/04 职场文书
护士求职自荐信范文
2014/03/19 职场文书
电子信息工程自荐信
2014/05/26 职场文书
护士爱岗敬业心得体会
2016/01/25 职场文书
哪类餐饮行业,最适合在高校创业?
2019/08/19 职场文书
MySQL导致索引失效的几种情况
2022/06/25 MySQL