用正则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 相关文章推荐
表单的一些基本用法与技巧
Jul 15 Javascript
JavaScript类型转换方法及需要注意的问题小结(挺全面)
Nov 11 Javascript
jqgrid 简单学习笔记
May 03 Javascript
jquery 操作两个select实现值之间的互相传递
Mar 07 Javascript
jquery实现的随机多彩tag标签随机颜色和字号大小效果
Mar 27 Javascript
JavaScript中的标签语句用法分析
Feb 10 Javascript
js+css实现超简洁的二级下拉菜单效果代码
Sep 07 Javascript
Angular.js实现动态加载组件详解
May 28 Javascript
JavaScript实现的原生态兼容IE6可调可控滚动文字功能详解
Sep 19 Javascript
微信小程序动态添加view组件的实例代码
May 23 Javascript
vue项目中全局引入1个.scss文件的问题解决
Aug 01 Javascript
详解vue中v-for的key唯一性
May 15 Vue.js
通过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中的HashTable结构详解
2013/06/13 PHP
php与java通过socket通信的实现代码
2013/10/21 PHP
php web环境和命令行环境下查找php.ini的位置
2019/07/17 PHP
关于实现代码语法标亮 dp.SyntaxHighlighter
2007/02/02 Javascript
理解Javascript_01_理解内存分配原理分析
2010/10/11 Javascript
使用js实现一个可编辑的select下拉列表
2014/02/20 Javascript
iframe里的页面禁止右键事件的方法
2014/06/10 Javascript
深入学习jQuery Validate表单验证(二)
2016/01/18 Javascript
好好了解一下Cookie(强烈推荐)
2016/06/14 Javascript
Vue组件BootPage实现简单的分页功能
2016/09/12 Javascript
JavaScript实现页面定时刷新(定时器,meta)
2016/10/12 Javascript
jQuery滚动监听实现商城楼梯式导航效果
2017/03/06 Javascript
React-Native中props具体使用详解
2017/09/04 Javascript
关于laydate.js加载laydate.css路径错误问题解决
2017/12/27 Javascript
JS基于开关思想实现的数组去重功能【案例】
2019/02/18 Javascript
20道JS原理题助你面试一臂之力(必看)
2019/07/22 Javascript
Python三元运算实现方法
2015/01/12 Python
python函数的5种参数详解
2017/02/24 Python
Python 基础之字符串string详解及实例
2017/04/01 Python
Python 3.6 性能测试框架Locust安装及使用方法(详解)
2017/10/11 Python
python编程实现随机生成多个椭圆实例代码
2018/01/03 Python
在pyqt5中QLineEdit里面的内容回车发送的实例
2019/06/21 Python
python3的print()函数的用法图文讲解
2019/07/16 Python
在python中logger setlevel没有生效的解决
2020/02/21 Python
Python代码一键转Jar包及Java调用Python新姿势
2020/03/10 Python
Python字符串hashlib加密模块使用案例
2020/03/10 Python
Python 捕获代码中所有异常的方法
2020/08/03 Python
Python importlib模块重载使用方法详解
2020/10/13 Python
Python项目打包成二进制的方法
2020/12/30 Python
墨西哥皇宫度假村预订:Palace Resorts
2018/06/16 全球购物
澳大利亚领先的亚麻品牌:Bed Threads
2019/12/16 全球购物
一套SQL笔试题
2016/08/14 面试题
摄影实习自我鉴定
2013/09/20 职场文书
接受捐赠答谢词
2014/01/27 职场文书
2014年师德师风自我剖析材料
2014/09/27 职场文书
Python如何使用循环结构和分支结构
2022/04/13 Python