用asp自动解析网页中的图片地址
2023-06-13 09:13:40 时间
一,取得原页中的图片的地址。
<%
functionPicStr(str)
SetobjRegExp=NewRegexp"设置配置对象
objRegExp.IgnoreCase=True"忽略大小写
objRegExp.Global=True"设置为全文搜索
objRegExp.Pattern="<IMG.+?>""为了确保能准确地取出图片地址所以分为两层配置:首先找到里面的<IMG>标签,然后再取出里面的图片地址后面的getimgs函数就是实现后一个功能的。
strs=trim(str)
SetMatches=objRegExp.Execute(strs)"开始执行配置
ForEachMatchinMatches
PicStr=PicStr&getimgs(Match.Value)"执行第二轮的匹配
Next
"所有的图片在里面都是这样的src="http://图片的地址",所以可以这样来取得确切的图片地址
endfunction
functiongetimgs(str)
getimgs=""
SetobjRegExp1=NewRegexp
objRegExp1.IgnoreCase=True
objRegExp1.Global=True
objRegExp1.Pattern="http://.+?""""取出里面的地址
setmm=objRegExp1.Execute(str)
ForEachMatch1inmm
getimgs=getimgs&"||"&left(Match1.Value,len(Match1.Value)-1)"把里面的地址串起来备用
next
endfunction
%>
functionPicStr(str)
SetobjRegExp=NewRegexp"设置配置对象
objRegExp.IgnoreCase=True"忽略大小写
objRegExp.Global=True"设置为全文搜索
objRegExp.Pattern="<IMG.+?>""为了确保能准确地取出图片地址所以分为两层配置:首先找到里面的<IMG>标签,然后再取出里面的图片地址后面的getimgs函数就是实现后一个功能的。
strs=trim(str)
SetMatches=objRegExp.Execute(strs)"开始执行配置
ForEachMatchinMatches
PicStr=PicStr&getimgs(Match.Value)"执行第二轮的匹配
Next
"所有的图片在里面都是这样的src="http://图片的地址",所以可以这样来取得确切的图片地址
endfunction
functiongetimgs(str)
getimgs=""
SetobjRegExp1=NewRegexp
objRegExp1.IgnoreCase=True
objRegExp1.Global=True
objRegExp1.Pattern="http://.+?""""取出里面的地址
setmm=objRegExp1.Execute(str)
ForEachMatch1inmm
getimgs=getimgs&"||"&left(Match1.Value,len(Match1.Value)-1)"把里面的地址串起来备用
next
endfunction
%>
二,下载图片并保存在服务器上。
functiongetHTTPPage(url)
onerrorresumenext
dimhttp
sethttp=server.createobject("MSXML2.XMLHTTP")"使用xmlhttp的方法来获得图片的内容
Http.open"GET",url,false
Http.send()
ifHttp.readystate<>4then
exitfunction
endif
getHTTPPage=Http.responseBody
sethttp=nothing
iferr.number<>0thenerr.Clear
endfunction
"取得了图片的内容要保存,给人一种感觉是用FSO来作就可以了,但实际上不行,这样保存程序就会出错,因为FSO不支持流式的文件,所以我们要调用另一个对象:ADO.STREM。具体的过程如下:
functionsaveimage(from,tofile)
dimgeturl,objStream,imgs
geturl=trim(from)
imgs=gethttppage(geturl)"取得图片的具休内容的过程
SetobjStream=Server.CreateObject("ADODB.Stream")"建立ADODB.Stream对象,必须要ADO2.5以上版本
objStream.Type=1"以二进制模式打开
objStream.Open
objstream.writeimgs"将字符串内容写入缓冲
objstream.SaveToFileserver.mappath(tofile),2"-将缓冲的内容写入文件
objstream.Close()"关闭对象
setobjstream=nothing
endfunction
"所以只要用一个循环来把刚才取得的地址中的图片全部保存下来,具体过程如下:
arrimg=split(PicStr(str),"||")"分割字串,取得里面地址列表
allimg=""
newimg=""
fori=1toubound(arrimg)
ifarrimg(i)<>""andinstr(allimg,arrimg(i))<1then"看这个图片是否已经下载过
fname=baseurl&cstr(i&mid(arrimg(i),instrrev(arrimg(i),".")))
saveimage(arrimg(i),fname)‘保存地址的函数,过程见上面
allimg=allimg&"||"&arrimg(i)"把保存下来的图片的地址串回起来,以确定要替换的地址
newimg=newimg&"||"&fname"把本地的地址串回起来
endif
next
"第三步就是替换原来的地址了。具体的过程就是下面了:
arrnew=split(newimg,"||")"取得原来的图片地址列表
arrall=split(allimg,"||")"取得已经保存下来的图片的地址列表
fori=1toubound(arrnew)"执行循环替换原来的地址
strs=replace(strs,arrall(i),arrnew(i))
next
%>
相关文章
- php和asp网络验证码,Verifycode 1个简单的网页图片验证码的示例程序,基本上现有 字和字母都可以识别。 WEB(ASP,PHP,…) 238万源代码下载- www.pudn.com…
- ASP.NET Web——GridView完整增删改查示例(全篇幅包含sql脚本)大二结业考试必备技能
- ASP应用技术:连接Oracle数据库(asp连接oracle)
- ASP网页MySQL注入及防御研究(asp页面mysql注入)
- 使用ASP链接MySQL实现快速查表(asp链接mysql查表)
- ASP编程存取MySQL数据库出现乱码问题(asp读mysql乱码)
- 数据库探索ASP环境搭建MySQL数据库方法(asp搭建mysql)
- MySQL如何使用ASP插入数据(asp插入数据mysql)
- ASP连接MySQL从初学者到专家(asp引用mysql)
- ASP建站记MySQL的好帮手(asp建站源码mysql)
- 数据库ASP连接Oracle数据库简单实现实时数据访问(asp连续oracle)
- ASP调用Oracle数据庫,实现完美编程体验(asp访问oracle)
- ASP程序开发探索之oracle数据库(asp和oracle)
- asp,asp.net学习教程下载
- asp下正则实现URL自动链接的一个函数
- 充分利用ASP.NET的三种缓存提高站点性能的注意方法
- asp取得数组中的最大值的方法
- asp实现一个统计当前在线用户的解决方案
- asp经常被忽视的一种死循环
- Asp.net下载功能的解决方案
- asp.netUpdatePanel实现无刷新上传图片
- asp.net通过js实现Cookie创建以及清除Cookie数组的代码
- ASP网站出现msxml3.dll错误80072ee7错误的解决方法
- asp短信接口源码比较简单但也挺实用用的(两个写法)
- ASP.NET2.0缓存(Cache)技术深入理解
- asp.net抓取网页源码三种实现方法
- asp.net采集网页图片的具体方法
- asp.net网页里面为什么找不到CS文件
- asp.net+ajaxfileupload.js实现文件异步上传代码分享
- asp.net页面SqlCacheDependency缓存实例