用正则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实现学校的校历(asp.net+jquery ui 1.72)
Jan 01 Javascript
正负小数点后两位浮点数实现原理及代码
Sep 06 Javascript
js中继承的几种用法总结(apply,call,prototype)
Dec 26 Javascript
jQuery基于当前元素进行下一步的遍历
May 20 Javascript
使用javascript提交form表单方法汇总
Jun 25 Javascript
javascript实现网页背景烟花效果的方法
Aug 06 Javascript
JS实现可自定义大小,可双击关闭的弹出层效果
Oct 16 Javascript
jQuery实现简单的点赞效果
May 29 Javascript
基于JS实现二维码图片固定在右下角某处并跟随滚动条滚动
Feb 08 Javascript
CentOS环境中MySQL修改root密码方法
Jan 07 Javascript
基于vue-simplemde实现图片拖拽、粘贴功能
Apr 12 Javascript
解决ant design vue 表格a-table二次封装,slots渲染的问题
Oct 28 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
连接到txt文本的超链接,不直接打开而是点击后下载的处理方法
2009/07/01 PHP
PHP parse_url 一个好用的函数
2009/10/03 PHP
ThinkPHP框架设计及扩展详解
2014/11/25 PHP
php桥接模式应用案例分析
2019/10/23 PHP
BOOM vs RR BO3 第一场2.13
2021/03/10 DOTA
JQuery 学习笔记01 JQuery初接触
2010/05/06 Javascript
基于jquery的代码显示区域自动拉长效果
2011/12/07 Javascript
NodeJS 模块开发及发布详解分享
2012/03/07 NodeJs
js判断变量初始化的三种形式及推荐用的形式
2014/07/22 Javascript
jQuery中:image选择器用法实例
2015/01/03 Javascript
jQuery实现菜单感应鼠标滑动动画效果的方法
2015/02/28 Javascript
js实现div拖动动画运行轨迹效果代码分享
2015/08/27 Javascript
JS日期格式化之javascript Date format
2015/10/01 Javascript
举例讲解JavaScript substring()的使用方法
2015/11/09 Javascript
很全面的JavaScript常用功能汇总集合
2016/01/22 Javascript
js实现贪吃蛇小游戏(容易理解)
2017/01/22 Javascript
Vue 将后台传过来的带html字段的字符串转换为 HTML
2018/03/29 Javascript
angular *Ngif else用法详解
2020/12/15 Javascript
jQuery实现动态向上滚动
2020/12/21 jQuery
[00:34]DOTA2上海特级锦标赛 Spirit战队宣传片
2016/03/04 DOTA
python的urllib模块显示下载进度示例
2014/01/17 Python
python爬取w3shcool的JQuery课程并且保存到本地
2017/04/06 Python
python 反向输出字符串的方法
2018/07/16 Python
python numpy实现文件存取的示例代码
2019/05/26 Python
python递归法解决棋盘分割问题
2019/07/17 Python
Python 脚本拉取 Docker 镜像问题
2019/11/10 Python
python导入不同目录下的自定义模块过程解析
2019/11/18 Python
python数据分析工具之 matplotlib详解
2020/04/09 Python
Python3操作YAML文件格式方法解析
2020/04/10 Python
如何使用python自带IDLE的几种方法
2020/10/10 Python
Under Armour安德玛英国官网:美国高端运动科技品牌
2018/09/17 全球购物
Servlet如何得到服务器的信息
2015/12/22 面试题
党课培训心得体会
2014/09/02 职场文书
2015年简历自我评价范文
2015/03/11 职场文书
2022年四月新番
2022/03/15 日漫
Sentry的安装、配置、使用教程(Sentry日志手机系统)
2022/07/23 Python