Board logo

标题: 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” ,否则就不动它,最后判断这个标志就知道是不是存在要的图片了。