国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

用XML組件生成靜態首頁

2019-11-18 16:28:57
字體:
來源:轉載
供稿:網友

第 1 頁 利用Msxml2.Serverxmlhttp抓取網頁內容
第 2 頁 用ADODB.Stream將抓取內容寫入文件
第 3 頁 具體的舉一個例子
了解asp的人應該都知道asp是一種解釋執行的腳本程序語言,而腳本程序的執行效率往往都是很低的,如果站點的訪問量相對較高的話服務器就會非常消耗資源,表現的結果就是站點訪問速度急速下降.解決的方法,除了優化程序提高執行效率,還有一個方法就是將網站內的訪問量大的頁面定時的生成靜態html文件,這樣可以非常有效的解決訪問速度問題,當然前提是你的服務器速度也要不是很慢了,不然怎么弄都是沒有效果的.   下面我介紹一種利用Msxml2.ServerXMLHTTP組件來抓取您所要生成靜態的網頁,然后再利用fso,或者ado來寫入文件的一種方法,需要注意的是本文例子全部采用utf-8編碼,如果改為gb2312需要做相應屬性的修改! 先給處下面的函數:
<!--'相關問題可訪問http://www.survivalescaperooms.com

Function GetURL(URL)
'下載主函數
const TimeInterval=60
'設定時間間隔
'如果下載時間很慢,就寫成120秒
'Response.LCID=2052
const lResolve=6
'解析域名超時時間,秒
const lConnect=6
'連接站點超時時間,秒
const lSend=6
'發送數據請求超時時間,秒
const lReceive=40
'下載數據超時時間,秒
on error resume Next
Dim http
Set http = Server.CreateObject("Msxml2.ServerXMLHTTP")
http.setTimeouts lResolve*1000,lConnect*1000,lSend*1000,lReceive*1000
http.Open "GET",URL,False
http.Send
Select Case http.readyState
Case 0
GetURL="對象初始化失敗"
Err.Clear
set http=nothing
Exit Function
Case 1
GetURL="域名分析超時/連接站點超時"
Err.Clear
set http=nothing
Exit Function
Case 2
GetURL="發送數據請求超時,是不是服務器出故障了"
Err.Clear
set http=nothing
Exit Function
Case 3
GetURL="數據下載超時/等待反饋時間超時"
Err.Clear
set http=nothing
Exit Function
Case 4
'下載成功
End Select
If http.status<>200  then
GetURL="下載失敗"&Err.description
Err.Clear
set http=nothing
Exit Function
END IF
If http.status="200" then
GetURL=http.ResponseText
'GetURL=SaveFile()
End If
set http=nothing
End Function
-->


  主要功能是抓取地址參數的網頁文件的內容  使用方法varia=GetURL("http://www.survivalescaperooms.com"),如果是本地測試地址可以寫成http://localhost/default.asp   使用此函數需要注意的是Response.LCID=2052屬性在windows server 2000下不被支持,不過問題不大只要注釋掉即可正常使用!   還有一些超時屬性可以根據需要自定義,但注意不要設置的時間太短,否則如果文件大或者地址訪問速度較慢就容易抓取失敗! 這讓我們就可以利用此函數來抓取你想要生成的網頁文件內容了.將內容存入變量,等著寫入文件吧!


下面給出這個類,用來將剛剛利用函數抓取的內容寫入相應文件,這樣就大功告成了! 直接生成你所要生成的網頁吧,非常方便而且不用修改原來的文件!

Class Htmlmaker

'相關問題請參看 http://www.survivalescaperooms.com
'/*************************
'/ 屬性設置說明

'/ foldename "文件夾名"
'/ 如果不設置,將自動生成[年月日]時間格式的文件夾名

'/ Filename "文件名"(含前后綴)
'/ 如果不設置,將自動生成[時分秒]時間格式的文件名,后綴為.html

'/ Htmlstr "生成的代碼內容"
'/*************************


PRivate HtmlFolder,HtmlFilename,HtmlContent

Public property let foldename(str)
HtmlFolder=str
End property

Public property let Filename(str)
HtmlFilename=str
End property

Public property let Htmlstr(str)
HtmlContent=str
End property

'/*************************
'/ 文件名轉換日期函數
'/*************************

    Private Function Datename1(timestr)
        dim s_year,s_month,s_day
        s_year=year(timestr)
        if len(s_year)=2 then s_year="20"&s_year
        s_month=month(timestr)
        if s_month<10 then s_month="0"&s_month
        s_day=day(timestr)
        if s_day<10 then s_day="0"&s_day
        Datename1=s_year & s_month & s_day
    End Function

    Private Function Datename2(timestr)
        dim s_hour,s_minute,s_ss
        s_hour=hour(timestr)
        if s_hour<10 then s_hour="0"&s_hour
        s_minute=minute(timestr)
        if s_minute<10 then s_minute="0"&s_minute
        s_ss=second(timestr)
        if s_ss<10 then s_ss="0"&s_ss
        Datename2 = s_hour & s_minute & s_ss
    End Function

'/*************************
'/ 初試化
'/*************************

    Private Sub class_initialize()
        HtmlFolder=Datename1(now)
        HtmlFilename=Datename2(now)&".html"
        HtmlC
    End Sub

    Private Sub class_terminate()
    End Sub


'/*************************
'/ Html文件生成
'/*************************

    Public Sub Htmlmake()
    '    On Error Resume Next
        dim filepath,fso,fout
        filepath = HtmlFolder&"/"&HtmlFilename
        Set fso = Server.CreateObject("Scripting.FileSystemObject")
        If fso.FolderExists(Server.MapPath(HtmlFolder)) Then
        Else
        fso.CreateFolder(Server.MapPath(HtmlFolder))
        End If
    '    Set fout = fso.CreateTextFile(Server.MapPath(filepath),true)
    '    fout.WriteLine HtmlContent
    '    fout.close
        dim objFSO,adTypeText,adSaveCreateOverWrite,Charsett,objAdoStream
        Charsett = "utf-8"
        set objAdoStream = Server.CreateObject("ADODB.Stream")
        adTypeText  = 2
        adSaveCreateOverWrite = 2
        objAdoStream.Type = adTypeText
        objAdoStream.Open
        objAdoStream.Charset = Charsett
        objAdoStream.WriteText(HtmlContent)
        objAdoStream.SaveToFile Server.MapPath(filepath),2
        objAdoStream.Close
    End Sub

'/*************************
'/ Html文件刪除
'/*************************


    Public Sub Htmldel()
    dim filepath,fso
    filepath = HtmlFolder&"/"&HtmlFilename
    Set fso = CreateObject("Scripting.FileSystemObject")
    if fso.FileExists(Server.MapPath(filepath)) then
        fso.DeleteFile(Server.mappath(filepath))
    end if
    Set fso = nothing
    End Sub

End class


下面為了讓大家更好的學習給出具體的舉一個實例:

我們有一個網站地址是 http://www.survivalescaperooms.com/

我們要將其首頁也就是default.asp生成靜態的htm文件

我們先建立個文件:makeindex.asp

<!--#include file="function_class.asp"-->
<%
dim indexhtmlstr
indexhtmlstr=GetURL("http://www.survivalescaperooms.com/default.asp")
dim indexfilename
indexfilename="index.htm"
dim actionstat
if len(indexhtmlstr) <200 then
    acti&indexfilename&"文件時遇到"&indexhtmlstr&"錯誤"
else
    dim myhtml
    set myhtml= new Htmlmaker
    myhtml.foldename = "../.."
    myhtml.Filename = indexfilename
    myhtml.Htmldel
    myhtml.Htmlstr = indexhtmlstr
    myhtml.Htmlmake
    set myhtml=nothing
    acti&indexfilename&"文件"
end if
response.write actionstat
%>


文件function_class.asp的內容主要包括前面給出的函數和生成文件的類就可以了!
運行makeindex.asp就可以生成htm文件了!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 仪陇县| 文登市| 河间市| 图木舒克市| 滨海县| 巫溪县| 武陟县| 交城县| 武鸣县| 安顺市| 通海县| 天水市| 新乐市| 新和县| 剑川县| 军事| 平谷区| 平顺县| 定边县| 冀州市| 磴口县| 临潭县| 岑巩县| 丹东市| 建平县| 威宁| 安溪县| 丹巴县| 修水县| 轮台县| 紫云| 尼木县| 彩票| 益阳市| 德州市| 黄陵县| 毕节市| 屯门区| 江城| 泗水县| 文化|