用正则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 字符串连接的性能问题(多浏览器)
Nov 18 Javascript
轻松实现javascript数据双向绑定
Nov 11 Javascript
KnockoutJS 3.X API 第四章之表单textInput、hasFocus、checked绑定
Oct 11 Javascript
微信小程序 label 组件详解及简单实例
Jan 10 Javascript
Angular自定义组件实现数据双向数据绑定的实例
Dec 11 Javascript
详解如何在React组件“外”使用父组件的Props
Jan 12 Javascript
详解如何配置vue-cli3.0的vue.config.js
Aug 23 Javascript
Vue瀑布流插件的使用示例
Sep 19 Javascript
详解React项目如何修改打包地址(编译输出文件地址)
Mar 21 Javascript
javascript设计模式 ? 状态模式原理与用法实例分析
Apr 22 Javascript
在项目vue中使用echarts的操作步骤
Sep 07 Javascript
JavaScript中Object、map、weakmap的区别分析
Dec 15 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文件上传表单摘自drupal的代码
2011/02/15 PHP
PHP怎么实现网站保存快捷方式方便用户随时浏览
2013/08/15 PHP
thinkphp的c方法使用示例
2014/02/24 PHP
PHP、Java des加密解密实例
2015/04/27 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
PHP使用DOM对XML解析处理操作示例
2019/07/04 PHP
javascript获取网页中指定节点的父节点、子节点的方法小结
2013/04/24 Javascript
基于JavaScript自定义构造函数的详解说明
2013/04/24 Javascript
javaScript如何跳出多重循环break、continue
2016/09/01 Javascript
canvas学习之API整理笔记(一)
2016/12/29 Javascript
angularjs实现上拉加载和下拉刷新数据功能
2017/06/12 Javascript
Vue中添加手机验证码组件功能操作方法
2017/12/07 Javascript
详解async/await 异步应用的常用场景
2019/05/13 Javascript
微信小程序的开发范式BeautyWe.js入门详解
2019/07/10 Javascript
vue使用swiper.js重叠轮播组建样式
2019/11/14 Javascript
Vuex实现数据共享的方法
2019/12/20 Javascript
javascript实现点击按钮切换轮播图功能
2020/09/23 Javascript
原生JS实现拖拽功能
2020/12/16 Javascript
Django实现一对多表模型的跨表查询方法
2018/12/18 Python
Django框架model模型对象验证实现方法分析
2019/10/02 Python
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
2020/06/30 Python
Sephora丝芙兰菲律宾官方网站:购买化妆品和护肤品
2017/04/05 全球购物
Claire’s法国:时尚配饰、美容、珠宝、头发
2021/01/16 全球购物
工地资料员岗位职责
2013/12/31 职场文书
项目合作协议书
2014/04/16 职场文书
《荷花》教学反思
2014/04/16 职场文书
秋天的图画教学反思
2014/05/01 职场文书
贷款委托书怎么写
2014/08/02 职场文书
争先创优公开承诺书
2014/08/30 职场文书
迎国庆演讲稿
2014/09/15 职场文书
保研推荐信格式
2015/03/25 职场文书
2015年国庆节演讲稿范文
2015/07/30 职场文书
交通安全教育主题班会
2015/08/12 职场文书
MySQL注入基础练习
2021/05/30 MySQL
如何用python清洗文件中的数据
2021/06/18 Python
python数据可视化使用pyfinance分析证券收益示例详解
2021/11/20 Python