您正在使用IPV4(3.236.50.252)访问本站 您本次共访问本站 1 次
 用户名: 密 码: 验证码:     用QQ登录本站
首页 软件 编程 笑话 知识 公告 台风 日历 计算器
[公益]文明驾车我带头,文明行路我带头,礼貌让座我带头       深圳小产权房      

【腾讯云】热门云产品首单特惠秒杀,2核2G云服务器45元/年      
[公益] 节省一分零钱 献出一份爱心 温暖世间真情      
2022年 儿童节 13
2022年 端午节 15
2023年 元 旦 227
2023年 春 节 248
全部 综合数码金融娱乐服务报刊政府机构 推荐 申请友情  
本类新增
本类热门文章
您现在的位置:首页 >> ASP/ASP.net >> 内容
用asp自动解析网页中的图片地址
内容摘要: 一,取得原页中的图片的地址。%functionPicStr(str)SetobjRegExp=NewRegexp'设置配置对象objRegExp.IgnoreCase=True'忽略大小写objRegExp.Global=True'设置为全文搜索objRegExp.Pattern='IMG.+?''为了确保能准确地取出图片地址所以分为两层配置:首先找到里面的......
一,取得原页中的图片的地址。

<%

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

%>

上一篇:通过数组给您的文件排序 下一篇:检查sql字符串中是否有单引号,有则进行
发布日期:2021/12/27
手机扫二维码直达本页
发布时间:12:40:06
点击:632
录入:壹家怡园
相关文章
Baidu

YiJiaCMS 6.2.1.220509(MSSQL) 闽ICP备05000814号-1
本空间由腾讯云(轻量应用服务器)提供,百度云加速提供加速防护
Copyright©2000-2022