用正则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 相关文章推荐
JS求平均值的小例子
Nov 29 Javascript
jquery实现鼠标滑过显示提示框的方法
Feb 05 Javascript
详解JavaScript中的4种类型识别方法
Sep 14 Javascript
JS提交form表单实例分析
Dec 10 Javascript
Bootstrap弹出框modal上层的输入框不能获得焦点问题的解决方法
Dec 13 Javascript
关于bootstrap日期转化,bootstrap-editable的简单使用,bootstrap-fileinput的使用详解
May 12 Javascript
vue以组件或者插件的形式实现throttle或者debounce
May 22 Javascript
仿iPhone通讯录制作小程序自定义选择组件的实现
May 23 Javascript
IE浏览器下JS脚本提交表单后,不能自动提示问题解决方法
Jun 04 Javascript
在Koa.js中实现文件上传的接口功能
Oct 08 Javascript
JavaScript enum枚举类型定义及使用方法
May 15 Javascript
jQuery实现简单全选框
Sep 13 jQuery
通过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
ajax php 实现写入数据库
2009/09/02 PHP
Zend Framework教程之资源(Resources)用法实例详解
2016/03/14 PHP
php利用嵌套数组拼接与解析json的方法
2017/02/07 PHP
PHP面向对象程序设计之对象的遍历操作示例
2019/06/12 PHP
JS代码格式化和语法着色V2
2006/10/14 Javascript
JavaScript 原型链学习总结
2010/10/29 Javascript
编写针对IE的JS代码两种编写方法
2013/01/30 Javascript
网页运行时提示对象不支持abigimage属性或方法
2014/08/10 Javascript
jQuery给动态添加的元素绑定事件的方法
2015/03/09 Javascript
BootStrap Fileinput的使用教程
2016/12/30 Javascript
关于redux-saga中take使用方法详解
2018/02/27 Javascript
微信小程序scroll-view实现滚动穿透和阻止滚动的方法
2018/08/20 Javascript
详解关于Vue版本不匹配问题(Vue packages version mismatch)
2018/09/17 Javascript
微信小程序indexOf的替换方法(推荐)
2020/01/14 Javascript
Windows下PyMongo下载及安装教程
2015/04/27 Python
Python文件操作之合并文本文件内容示例代码
2017/09/19 Python
利用python库在局域网内传输文件的方法
2018/06/04 Python
在python下读取并展示raw格式的图片实例
2019/01/24 Python
python 求一个列表中所有元素的乘积实例
2019/06/11 Python
python实现简单成绩录入系统
2019/09/19 Python
使用Django清空数据库并重新生成
2020/04/03 Python
python实现sm2和sm4国密(国家商用密码)算法的示例
2020/09/26 Python
成都思必达公司C#程序员招聘面试题
2013/06/26 面试题
函授生自我鉴定
2014/03/25 职场文书
学习雷锋做美德少年寄语大全
2014/04/09 职场文书
弄虚作假心得体会
2014/09/10 职场文书
教师四风问题对照检查材料
2014/09/26 职场文书
乡镇群众路线教育实践活动整改措施
2014/10/04 职场文书
个人授权委托书范本格式
2014/10/12 职场文书
发展党员工作情况汇报
2014/10/28 职场文书
2014年流动人口工作总结
2014/11/26 职场文书
2015年公司新年寄语
2014/12/08 职场文书
入党积极分子党支部意见
2015/06/02 职场文书
Python爬虫之爬取最新更新的小说网站
2021/05/06 Python
详解Go语言运用广度优先搜索走迷宫
2021/06/23 Python
Python内置数据结构列表与元组示例详解
2021/08/04 Python