在VBScript中,我們用XMLHTTP組件來獲取網頁源代碼,並可以賦給某變量從而動態保存為Html文件。有關XMLHTTP對象的介紹請參考以下文章:http://www.webjx.com/htmldata/2005-10-17/1129556661.html;有關XMLHTTP的使用實例請參考以下文章:http://www.webjx.com/htmldata/2005-02-25/1109332374.Html。
我按照第二篇文章的介紹寫了一段代碼:
<%
set x=server.createObject("Microsoft.XMLHTTP")
x.open "get","http://www.webjx.com",false
x.send
response.write "<xmp>"&x.responseText&"</xmp>"
set x=nothing
%>
不過測試後發現其中的中文全都顯示為亂碼,去網上搜了一下,實在找不著一個簡單的解決辦法。不過找到一個responseBody屬性,這在第一篇文章中是沒有提及的。和responseText屬性不同的是,responseBody返回的是一個二進制字符串(responseText返回的是普通字符串),用response.binaryWrite x.responseBody,發現能正常顯示中文。於是我們只需編寫一個把二進制字符串轉換為普通字符串的函數bin2str:
function bin2str(bin)
dim tmp,ustr
tmp=""
for i=1 to LenB(bin)-1
ustr=AscB(MidB(bin,i,1))
if ustr>127 then
i=i+1
tmp=tmp&chr(ustr*256+AscB(MidB(bin,i,1)))
else
tmp=tmp&chr(ustr)
end if
next
bin2str=tmp
end function
關於從二進制字符串中恢復漢字信息請參照以下文章:http://www.ahcit.com/200407/20040752.doc。
有了這個函數,我們就可以很方便地提取指定網址的源代碼並賦給變量了:
set x=server.createObject("Microsoft.XMLHTTP")
x.open "get","http://www.webjx.com",false
x.send
str=bin2str(x.responseBody)
response.write "<xmp>"&str&"</xmp>"
set x=nothing