用正则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 相关文章推荐
javascript 获取图片颜色
Apr 05 Javascript
你必须知道的Javascript知识点之&quot;深入理解作用域链&quot;的介绍
Apr 23 Javascript
用JavaScript实现动画效果的方法
Jul 20 Javascript
JS实现点击图片在当前页面放大并可关闭的漂亮效果
Oct 18 Javascript
Javascript字符串对象的常用方法简明版
Jun 26 Javascript
JQuery的Ajax中Post方法传递中文出现乱码的解决方法
Oct 21 Javascript
JS实现给对象动态添加属性的方法
Jan 05 Javascript
JavaScript操作文件_动力节点Java学院整理
Jun 30 Javascript
Vue自定义过滤器格式化数字三位加一逗号实现代码
Mar 23 Javascript
vue组件间通信六种方式(总结篇)
May 15 Javascript
javascript异步编程的六种方式总结
May 17 Javascript
微信小程序实现多行文字超出部分省略号显示功能
Oct 23 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 extract 将数组拆分成多个变量的函数
2010/06/30 PHP
PHP输出当前进程所有变量/常量/模块/函数/类的示例
2013/11/07 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
php中各种定义变量的方法小结
2017/10/18 PHP
JQuery 引发两次$(document.ready)事件
2010/01/15 Javascript
JavaScript 构造函数 面相对象学习必备知识
2010/06/09 Javascript
JS操作Cookie写入和读取实例代码
2013/10/20 Javascript
JavaScript function 的 length 属性使用介绍
2014/09/15 Javascript
简介AngularJS中使用factory和service的方法
2015/06/17 Javascript
jQuery+JSON实现AJAX二级联动实例分析
2015/12/18 Javascript
JavaScript中的工厂函数(推荐)
2017/03/08 Javascript
在vue-cli项目中使用bootstrap的方法示例
2018/04/21 Javascript
angularjs的单选框+ng-repeat的实现方法
2018/09/12 Javascript
JavaScript中的事件与异常捕获详析
2019/02/24 Javascript
js验证身份证号码记录的方法
2019/04/26 Javascript
[00:35]2016完美“圣”典风云人物:冷冷宣传片
2016/12/08 DOTA
Python使用Redis实现作业调度系统(超简单)
2016/03/22 Python
Python检测网站链接是否已存在
2016/04/07 Python
python基础教程之分支、循环简单用法
2016/06/16 Python
Python中不同进制的语法及转换方法分析
2016/07/27 Python
SQLite3中文编码 Python的实现
2017/01/11 Python
selenium+python自动化测试之环境搭建
2019/01/23 Python
python脚本后台执行方式
2019/12/21 Python
python实现将range()函数生成的数字存储在一个列表中
2020/04/02 Python
python为什么会环境变量设置不成功
2020/06/23 Python
python基于win32api实现键盘输入
2020/12/09 Python
python 实现逻辑回归
2020/12/30 Python
美国奢侈品在线团购网站:Gilt City
2017/11/16 全球购物
英国优质家居用品网上品牌:URBANARA
2018/06/01 全球购物
银行职员个人的工作自我评价
2014/02/15 职场文书
绿里奇迹观后感
2015/06/15 职场文书
2015大学迎新标语
2015/07/16 职场文书
2016年小学教师政治学习心得体会
2016/01/23 职场文书
pygame面向对象的飞行小鸟实现(Flappy bird)
2021/04/01 Python
利用Python+OpenCV三步去除水印
2021/05/28 Python
Python中常见的反爬机制及其破解方法总结
2021/06/10 Python