您正在使用IPV4(54.161.98.96)访问本站 您本次共访问本站 1 次
 用户名: 密 码: 验证码:     用QQ登录本站
首页 软件 编程 笑话 知识 公告 台风 日历 计算器 行情 简化版
文明驾车我带头,文明行路我带头,礼貌让座我带头      

【腾讯云】云产品限时秒杀,爆款1核2G云服务器,首年74元      
[公益] 节省一分零钱 献出一份爱心 温暖世间真情      
2022年 情人节 18
2022年 元宵节 19
2023年 元 旦 339
2022年 春 节 5
 
  • 本类新增
    本类热门文章
    您现在的位置:首页 >> 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
    点击:281
    录入:壹家怡园
    相关文章
    Baidu
    YiJiaCMS 6.1.0.10988 Build 21.12.28(MSSQL) 闽ICP备05000814号-1
    本空间由腾讯云(轻量应用服务器)提供,百度云加速提供加速防护

    Copyright©2000-2022