标题: vbs 如何判断一个链接的有效性?
[打印本页]
作者: 25869
时间: 2009-8-5 00:12
标题: vbs 如何判断一个链接的有效性?
比如,要判断
www.baidu.com/img/baidu_logo.gif 是否有效或存在,变一下slore兄的代码,总是提示不通。
不知这个举一反三是不是用错了,请指教,多谢!
HOST = "."
TARGET = "www.baidu.com/img/baidu_logo.gif"
Set PingResults = GetObject("winmgmts:{impersonationLevel=impersonate}//" & _
HOST & "/root/cimv2"). ExecQuery("SELECT * FROM Win32_PingStatus " & _
"WHERE Address = '" + TARGET + "'")
For Each PingResult In PingResults
If PingResult.StatusCode = 0 Then
WScript.Echo "通"
Else
WScript.Echo "不通"
End If
Next
作者: slore
时间: 2009-8-5 01:38
。。。
站点你可以ping……
URL你用HTTP对象,下载看看返回代码。。。
作者: 25869
时间: 2009-8-5 05:03
url="http://www.baidu.com/img/baidu_logo.gif"
Set xmlHTTP=createobject("Microsoft.XMLHTTP")
xmlhttp.open "GET", URL, False, False
xmlhttp.send
wscript.sleep 300
If xmlhttp.status=200 Then
wscript.echo "ok"
else
wscript.echo "no"
end if
不论什么链接,都提示 ok ,请问怎么改正?
作者: qinchun36
时间: 2009-8-5 06:26
这个是因为一般网站都设置了一个 404 页面,当请求不存在的时候跳到这个错误页面,所以你的请求总是会成功的,但得到的返回却不是你想要的东西。
我帮你写了个代码,效率可能比较低,因为要下载请求资源进行验证,能判断返回的是不是资源文件(图片、声音、视频、压缩包等)。
'(P) 『据说是李先生』
on error resume next
msgYES = "指定资源存在。"
msgNO = "指定的资源不存在。"
'URL 要写完整的
url="http://www.baidu.com/img/baidu_logo.gif"
Set xmlHTTP=createobject("Microsoft.XMLHTTP")
xmlhttp.open "GET", URL, false
xmlhttp.send
if err.number <> 0 then
flagText = "cn-dos.net"
else
flagText = left(xmlhttp.responseText, 1703)
set regex = new RegExp
regEx.Global = True
regex.pattern = "^\s*"
flagText = regex.replace(flagText, "")
regex.pattern = "^<.*>"
flagText = regex.replace(flagText, "cn-dos.net")
flagText = left(flagText, 10)
msgNO = msgNO & vbcrlf & "或者不是图片、声音、食品、程序、压缩文件类型文件。"
end if
If flagText <> "cn-dos.net" Then
wscript.echo msgYES
else
wscript.echo msgNO
end if
[
Last edited by qinchun36 on 2009-8-6 at 00:46 ]
附件
1:
验证.zip (2009-8-6 00:45, 618 bytes,下载次数: 28)
作者: 25869
时间: 2009-8-6 11:53
qinchun36兄,能否解释一下flagText 的作用?
作者: qinchun36
时间: 2009-8-7 11:10
Quote: |
Originally posted by 25869 at 2009-8-6 11:53 AM:
qinchun36兄,能否解释一下flagText 的作用? |
|
用来大致识别文件类型的。
我是将服务器返回的内容进行分析,因为这个例子中的目的是要图片,如果返回的是图片肯定不会是以 <****> 样式开头的,如果是这种就标记为 “cn-dos.net” ,否则就不动它,最后判断这个标志就知道是不是存在要的图片了。