用XML組件生成靜態(tài)首頁
來源:易賢網 閱讀:1072 次 日期:2014-09-10 16:45:09
溫馨提示:易賢網小編為您整理了“用XML組件生成靜態(tài)首頁”,方便廣大網友查閱!

第 1 頁 利用Msxml2.ServerXMLHTTP抓取網頁內容

第 2 頁 用ADODB.Stream將抓取內容寫入文件

第 3 頁 具體的舉一個例子

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

<!--'相關問題可訪問

Function GetURL(URL)

'下載主函數(shù)

const TimeInterval=60

'設定時間間隔

'如果下載時間很慢,就寫成120秒

'Response.LCID=2052

const lResolve=6

'解析域名超時時間,秒

const lConnect=6

'連接站點超時時間,秒

const lSend=6

'發(fā)送數(shù)據請求超時時間,秒

const lReceive=40

'下載數(shù)據超時時間,秒

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="發(fā)送數(shù)據請求超時,是不是服務器出故障了"

Err.Clear

set http=nothing

Exit Function

Case 3

GetURL="數(shù)據下載超時/等待反饋時間超時"

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

-->

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

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

Class Htmlmaker

'相關問題請參看

'/*************************

'/ 屬性設置說明

'/ 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

'/*************************

'/ 文件名轉換日期函數(shù)

'/*************************

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

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

我們有一個網站地址是

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

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

<!--#include file="function_class.asp"-->

<%

dim indexhtmlstr

indexhtmlstr=GetURL("")

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的內容主要包括前面給出的函數(shù)和生成文件的類就可以了!

運行makeindex.asp就可以生成htm文件了!

更多信息請查看IT技術專欄

更多信息請查看網絡編程
易賢網手機網站地址:用XML組件生成靜態(tài)首頁

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯(lián)系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網