📄 200532115122.htm
字号:
<HTML><HEAD><TITLE>用asp自动解析网页中的图片地址,并将其保存到本地服务器-http://www.koyee.com</TITLE>
<SCRIPT src="../../ips.asp"></SCRIPT>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META http-equiv=http://www.koyee.com content=no-cache>
<META content=可以网络在线,ASP技术,.NET技术,delphi技术,JSP技术,VB技术! name=KEYWORDS>
<STYLE type=text/css>
BODY {
BACKGROUND-IMAGE: url(images/webtop_bg3.gif); MARGIN: 0px
}
.style2 {
FONT-SIZE: 12px
}
BODY {
FONT-SIZE: 12px;
COLOR: #333333;
background-image: url();
}
TD {
FONT-SIZE: 12px; COLOR: #333333
}
TH {
FONT-SIZE: 12px; COLOR: #333333
}
A:link {
COLOR: #333333; LINE-HEIGHT: normal; FONT-STYLE: normal; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
A:visited {
COLOR: #cc3399; FONT-STYLE: normal; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
A:hover {
COLOR: #cc66ff; FONT-STYLE: normal; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
A:active {
COLOR: #ff9999; FONT-STYLE: normal; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.style4 {color: #FFFFFF}
.style5 {color: #000000}
.style6 {color: #FF0000}
.style7 {
color: #FF0000;
font-size: 16px;
font-weight: bold;
}
</STYLE></head>
<script language="JavaScript">
var timerID = null;
var timerRunning = false;
function stopclock (){
if(timerRunning)
clearTimeout(timerID);
timerRunning = false;}
function startclock () {
stopclock();
showtime();}
function showtime () {
var now = new Date();
var year = now.getYear();
var month = now.getMonth()+1;
var day = now.getDate();
var hours = now.getHours();
var minutes = now.getMinutes();
var seconds = now.getSeconds()
var timeValue =year +"年"
timeValue += month+"月"
timeValue += day+"日 "
timeValue += "" +((hours >= 12) ? "下午 " : "上午 " )
timeValue += ((hours >12) ? hours -12 :hours)
timeValue += ((minutes < 10) ? ":0" : ":") + minutes
timeValue += ((seconds < 10) ? ":0" : ":") + seconds
liveclock.innerHTML=timeValue
timerID = setTimeout("showtime()",1000);
timerRunning = true;}
</script>
<body onload="startclock()">
<TABLE height=60 cellSpacing=0 cellPadding=0 width="800"
align=center border=0>
<TBODY>
<TR>
<td background="../../images/webtop_bg.gif" width="332"><a target=blank href=http://wpa.qq.com/msgrd?V=1&Uin=61637663&Site=http://www.koyee.com&Menu=yes><img border="0" SRC=http://wpa.qq.com/pa?p=1:61637663:13 alt="有事就给我打电话,拼命的打"></a></td>
<td background="../../images/webtop_bg.gif" width="455"><script src="http://www.4.ads99.net/banner.php?userid=chdujian"></script></td>
</TR></TBODY></TABLE>
<TABLE height=25 cellSpacing=0 cellPadding=0 width="800"
align=center border=0>
<TBODY>
<TR>
<td background="../../images/22.gif"> <a href=../../index.htm>首页</a> | <a href=../../artical/69/1.htm>程序设计</a> | <a href=../../artical/77/1.htm>IT行情</a> | <a href=../../artical/78/1.htm>黑客攻防</a> | <a href=../../artical/79/1.htm>电脑硬件</a></td>
</TR></TBODY></TABLE>
<table width="800" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td scope="col"><img src="http://www.asp315.com/study/images/index_r1_c1.jpg" width="800" height="83"></td>
</tr>
</table>
<TABLE height=25 cellSpacing=0 cellPadding=0 width="800"
align=center border=0>
<TBODY>
<TR>
<td width="624" bgcolor="#CCCCCC">当前位置:<a href=../../index.htm>首页</a>--><a href=../../artical/69/1.htm>程序设计</a>--><a href=../../artical/80/1.htm>ASP专区</a>-->显示文章内容</td><td width="176" bgcolor="#CCCCCC"><span id="liveclock"></span></td>
</TR></TBODY></TABLE>
<table width="800" height="406" border="1" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">
<tr>
<td width="166" height="200" valign="top" scope="col"><table width="100%" height="163" border="0" cellpadding="0" cellspacing="0">
<tr>
<td height="119" valign="top" scope="col"><table width="180" border="0" cellspacing="0" cellpadding="0" align="center">
<form action="../../search.asp" method="post" name="searchLeftForm">
<tr bgcolor="CAF6F4" align="center">
<td height="25" bgcolor="#CC9900"><font color="#cc0000"><b>□
站 内 搜 索 □</b></font></td>
</tr>
<tr align="center">
<td style="line-height:150%" height=60> 请输入查询的字符串:<br>
<input name="search" type="text" class="button1" id="search" style="width:150">
<select name="seaguan" size="1" class="button1" id="seaguan" style="width:150">
<option value="">==> 综合查询 <==</option>
<option value="title">标题</option>
<option value="断剑">作者</option>
<option value="artical">内容</option>
<%call getNewsBoardTree()%>
</select>
</td>
</tr>
<tr align="center">
<td>
<input type="SUBMIT" name="Action" value=" 查 询 " class="button2">
<input type="RESET" name="Clear" value=" 重 写 " class="button2">
</td>
</tr>
<tr align="center">
<td height="10"></td>
</tr>
</form>
</table></td>
</tr>
<tr>
<td height="20"><table width="181" height="20" cellpadding="0" cellspacing="0">
<tr><td width="181" height="20" align="center" bgcolor="#CC9900">分类最新文章</td>
</tr>
<tr><td><a href=2005414529.htm target=_blank>使用正则表达式实现模式图片新</a></td></tr><tr><td><a href=200541450.htm target=_blank>asp常用数据库连接方法和技</a></td></tr><tr><td><a href=2005414428.htm target=_blank>使用简单的方法进行批量删除数</a></td></tr><tr><td><a href=2005414315.htm target=_blank>asp提高首页性能的一个技巧</a></td></tr><tr><td><a href=2005414230.htm target=_blank>ASP防注入之解决方案--加</a></td></tr><tr><td><a href=2005414158.htm target=_blank>使用ASP加密算法加密你的数</a></td></tr><tr><td><a href=2005414120.htm target=_blank>常用ASP自定义函数集</a></td></tr><tr><td><a href=2005414035.htm target=_blank>使用ASP生成HTML文件</a></td></tr><tr><td><a href=20054135956.htm target=_blank>在Flash中使用ASP技术</a></td></tr><tr><td><a href=200533011127.htm target=_blank>在asp中多个虚拟目录 se</a></td></tr>
</table></td>
</tr>
<tr>
<td height="20"><table width="181" height="20" cellpadding="0" cellspacing="0">
<tr><td width="181" height="20" align="center" bgcolor="#CC9900">分类热门文章</td>
</tr>
<tr><td><a href=200532713295.htm target=_blank>断剑新闻系统商业版!</a></td></tr><tr><td><a href=200532115451.htm target=_blank>有关sql注入</a></td></tr><tr><td><a href=200532115410.htm target=_blank>ASP、JSP、PHP 三种</a></td></tr><tr><td><a href=200532014532.htm target=_blank>[原创]关于断剑新闻系统1.</a></td></tr><tr><td><a href=2005320135030.htm target=_blank>[本站原创]用VS.NET封</a></td></tr><tr><td><a href=200532115337.htm target=_blank>改进性能和样式的 24个 A</a></td></tr><tr><td><a href=200532818925.htm target=_blank>初学asp的朋友 asp20</a></td></tr><tr><td><a href=2005414529.htm target=_blank>使用正则表达式实现模式图片新</a></td></tr><tr><td><a href=200532115122.htm target=_blank>用asp自动解析网页中的图片</a></td></tr><tr><td><a href=20053281846.htm target=_blank>DataGrid动态添加模板</a></td></tr>
</table></td>
</tr>
</table></td>
<td width="628" valign="top" scope="col"><table width="100%" border="0" align="center" cellspacing="0" cellpadding="5" bordercolordark="#FFFFFF" bordercolorlight="#000000" style="word-break:break-all;">
<tr>
<td width="100%">
</td>
</tr>
<tr>
<td width="100%">
<div align="center">
<p class="style7"><SPAN class=style1>用asp自动解析网页中的图片地址,并将其保存到本地服务器</SPAN></p>
<hr size="1" color="#0a778b" width="100%">
发布时间:2005-3-21 被阅览数:<SCRIPT src="../../counter.asp?id=377"></SCRIPT> 次 作者:断剑
</div>
</td>
</tr>
<tr>
<td width="100%"><p class="style6">现在基于WEB页的HTML的编辑器在新闻系统,文章系统中用得越来越广,一个网页一粘就可以保持原来的样式,同时图片也可以在这个页中保持。但是在使用过程中,如果所粘贴页中的图片被删除,就会在自己的页面上留下一个大大的“X”,影响美观。以前只好把这个图片保存下来,再重新上传到服务器上,这样实在麻烦。能不能让服务器自动去下载图片保存在服务器并且替换页面上的链接?答案是肯定的。 <BR>要实现这个功能需要经过三个步骤: <BR>一,取得原页中的图片的地址。方法很多,可以用分割字符串,也可以用正则匹配。实践证明用正则匹配最为简单。经过分析图片的地址都保存在<IMG>标签中。我们可以先取得所有这个标签。过程如下: <BR>Set objRegExp = New Regexp'设置配置对象 <BR>objRegExp.IgnoreCase = True’忽略大小写 <BR>objRegExp.Global = True’设置为全文搜索 <BR>objRegExp.Pattern = "<IMG.+?>"'为了确保能准确地取出图片地址所以分为两层配置:首先找到里面的<IMG>标签,然后再取出里面的图片地址后面的getimgs函数就是实现后一个功能的。 <BR>strs=trim(str) <BR>Set Matches =objRegExp.Execute(strs)’开始执行配置 <BR>For Each Match in Matches <BR>?RetStr = RetStr &getimgs( Match.Value )’执行第二轮的匹配 <BR>Next <BR>所有的图片在里面都是这样的src="http://图片的地址",所以可以这样来取得确切的图片地址: <BR>function getimgs(str) <BR>getimgs="" <BR>Set objRegExp1 = New Regexp <BR>objRegExp1.IgnoreCase = True <BR>objRegExp1.Global = True <BR>objRegExp1.Pattern = "http://.+?"""’取出里面的地址 <BR>set mm=objRegExp1.Execute(str) <BR>For Each Match1 in mm <BR>getimgs=getimgs&"||"&left(Match1.Value,len(Match1.Value)-1)’把里面的地址串起来备用 <BR>next <BR>end function <BR><BR>取得了所有的图片的地址,我们就可以进行第二步的操作了。 <BR>二,下载图片并保存在服务器上。这个又可以分为两个步骤:一个是取得图片的内容,另一个是保存在服务器上。取得图片的内容是通过下面的函数来实现的: <BR>function getHTTPPage(url) <BR>on error resume next <BR>dim http <BR>set http=server.createobject("MSXML2.XMLHTTP")‘使用xmlhttp的方法来获得图片的内容 <BR>Http.open "GET",url,false <BR>Http.send() <BR>if Http.readystate<>4 then <BR>exit function <BR>end if <BR>getHTTPPage=Http.responseBody <BR>set http=nothing <BR>if err.number<>0 then err.Clear <BR>end function <BR>取得了图片的内容要保存,给人一种感觉是用FSO来作就可以了,但实际上不行,这样保存程序就会出错,因为FSO不支持流式的文件,所以我们要调用另一个对象:ADO.STREM。具体的过程如下: <BR>function saveimage(from,tofile) <BR>dim geturl,objStream,imgs <BR>geturl=trim(from) <BR>imgs=gethttppage(geturl)'取得图片的具休内容的过程 <BR>Set objStream = Server.CreateObject("ADODB.Stream")'建立ADODB.Stream对象,必须要ADO 2.5以上版本 <BR>objStream.Type =1'以二进制模式打开 <BR>objStream.Open <BR>objstream.write imgs'将字符串内容写入缓冲 <BR>objstream.SaveToFile server.mappath(tofile),2'-将缓冲的内容写入文件 <BR>objstream.Close()'关闭对象 <BR>set objstream=nothing <BR>end function <BR>所以只要用一个循环来把刚才取得的地址中的图片全部保存下来,具体过程如下: <BR>arrimg=split(retstr,"||")'分割字串,取得里面地址列表 <BR>allimg="" <BR>newimg="" <BR>for i=1 to ubound(arrimg) <BR>if arrimg(i)<>"" and instr(allimg,arrimg(i))<1 then'看这个图片是否已经下载过 <BR>fname=baseurl&cstr(i&mid(arrimg(i),instrrev(arrimg(i),"."))) <BR>saveimage(arrimg(i),fname)‘保存地址的函数,过程见上面 <BR>allimg=allimg&"||"&arrimg(i)'把保存下来的图片的地址串回起来,以确定要替换的地址 <BR>newimg=newimg&"||"&fname'把本地的地址串回起来 <BR>end if <BR>next <BR>第三步就是替换原来的地址了。具体的过程就是下面了: <BR>arrnew=split(newimg,"||")'取得原来的图片地址列表 <BR>arrall=split(allimg,"||")'取得已经保存下来的图片的地址列表 <BR>for i=1 to ubound(arrnew)'执行循环替换原来的地址 <BR>strs=replace(strs,arrall(i),arrnew(i)) <BR>next <BR>cctv=strs <BR>讲到这里,这个函数的基本过程就是这样了,当然可以对它进行改造就可以实现更多的功能,如:加上图片大小的限制,加上对本地机上的图片下载的限制,以免造成重复下载图片。同时也应该看到这个函数的不足之处是只能处理静态的图片文件,不能适用程序生成的图片。 <BR><BR></p>
<p><img src="http://www.koyee.com/images/dgg.gif" height="70" width="587"> </p></td>
</tr>
<tr>
<td width="628" bordercolor="0" class="font1"><p>
<hr size="1" color="#0a778b" width="100%">
<table><tr><td width="269" align="center">上一篇: <a href=../80/200532114599.htm title=ASP学习:远程注册自己的组件>ASP学习:远程注册自己的组件</a> </td>
<td width="285" align="center">下一篇: <a href=../90/200542823048.htm title=gew>gew</a></td>
</tr></table>
<hr size="1" color="#0a778b" width="100%">
<div align="right"> <a href="javascript:window.print()"><img src="../../images/printer.gif" width="16" height="14" border="0" align="absmiddle">打印本页</a> | <a href="javascript:window.close()"><img src="../../images/close.gif" width="14" height="14" border="0" align="absmiddle">关闭窗口</a> </div>
<p></p></td>
</tr>
</table></td>
</tr>
</table>
<TABLE height=62 cellSpacing=0 cellPadding=0 width="800"
align=center background=../../images/webtop_bg.gif
border=0>
<TBODY>
<TR>
<TD><div align="center" class="style4">Copyright @ 2004-2008 http://www.koyee.com 可以网络在线版权所有<br>
公司地址:江西南昌 电话:13879173467 邮编:330029<br>
email:chenxueyan9999@163.com</div></TD>
</TR></TBODY></TABLE>
</BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -