用XML组件生成静态首页

2016-02-19 19:09 9 1 收藏

今天图老师小编要向大家分享个用XML组件生成静态首页教程,过程简单易学,相信聪明的你一定能轻松get!

【 tulaoshi.com - Web开发 】

  第 1 页 利用Msxml2.ServerXMLHTTP抓取网页内容
  第 2 页 用ADODB.Stream将抓取内容写入文件
  第 3 页 具体的举一个例子
  了解asp的人应该都知道asp是一种解释执行的脚本程序语言,而脚本程序的执行效率往往都是很低的,如果站点的访问量相对较高的话服务器就会非常消耗资源,表现的结果就是站点访问速度急速下降.解决的方法,除了优化程序提高执行效率,还有一个方法就是将网站内的访问量大的页面定时的生成静态html文件,这样可以非常有效的解决访问速度问题,当然前提是你的服务器速度也要不是很慢了,不然怎么弄都是没有效果的.   下面我介绍一种利用Msxml2.ServerXMLHTTP组件来抓取您所要生成静态的网页,然后再利用fso,或者ado来写入文件的一种方法,需要注意的是本文例子全部采用utf-8编码,如果改为gb2312需要做相应属性的修改! 先给处下面的函数:
  !--'相关问题可访问http://school.cnd8.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.status200  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://school.cnd8.com"),如果是本地测试地址可以写成http://localhost/default.asp   使用此函数需要注意的是Response.LCID=2052属性在windows server 2000下不被支持,不过问题不大只要注释掉即可正常使用!   还有一些超时属性可以根据需要自定义,但注意不要设置的时间太短,否则如果文件大或者地址访问速度较慢就容易抓取失败! 这让我们就可以利用此函数来抓取你想要生成的网页文件内容了.将内容存入变量,等着写入文件吧!

  
  下面给出这个类,用来将刚刚利用函数抓取的内容写入相应文件,这样就大功告成了! 直接生成你所要生成的网页吧,非常方便而且不用修改原来的文件!

  Class Htmlmaker

  '相关问题请参看 http://school.cnd8.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_month10 then s_month="0"&s_month
          s_day=day(timestr)
          if s_day10 then s_day="0"&s_day
          Datename1=s_year & s_month & s_day
      End Function

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

      Private Function Datename2(timestr)
          dim s_hour,s_minute,s_ss
          s_hour=hour(timestr)
          if s_hour10 then s_hour="0"&s_hour
          s_minute=minute(timestr)
          if s_minute10 then s_minute="0"&s_minute
          s_ss=second(timestr)
          if s_ss10 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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

  
  '/*************************
  '/ 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://school.cnd8.com/

  我们要将其首页也就是default.asp生成静态的htm文件

  我们先建立个文件:makeindex.asp

  !--#include file="function_class.asp"--
  %
  dim indexhtmlstr
  indexhtmlstr=GetURL("http://school.cnd8.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文件了!

来源:http://www.tulaoshi.com/n/20160219/1620123.html

延伸阅读
标签: Web开发
代码如下: % if SaveFile("/htm/list.htm","http://www.xxx.com/asp/list.asp") then Response.write "已生成" else Response.write "没有生成" end if function SaveFile(LocalFileName,RemoteFileUrl) Dim Ads, Retrieval, GetRemoteData On Error Resume Next Set&...
标签: Web开发
作者:马晓宁 xml(可扩展标记语言)看起来可能像某种w3c标准——现在没有什么实际影响,即使以后能派上用场,也是很久以后的事。但实际上,它现在已经得到了应用。所以,不要等到xml已被加进了你最喜爱的html编辑器中才开始使用它。它现在就可以解决各种内部问题和b2b系统问题。 在sparks.com,我们使用xml来标准化从java...
标签: Web开发
       对结点的属性赋值   一旦创建了结点,还要对其属性赋值,如独立的标识符,或者特性值。你要用到SetAttribute方法。该方法接收两个参数— 属性名和属性值。例如,下列代码创建了属性名SHIPPING_DATASOURCE 和属性值NORTH_ATLANTIC_SHIPPING:      objXMLroot.SetAttribute...
标签: Web开发
在ASP下使用XML DOM    要生成前面例子中的XML文档,我们可以用ASP来生成。我们将创建一个简单的ASP页,让你只需点击按钮,就可创建XML文档。为了完成这件事情,我们用了带有Windows脚本构件的ASP网页,由它来生成XML。我们将用Windows Script Component Wizard来生成初始代码。(如果你没有wizard,可到微软的脚本栏目中去寻找。) ...
标签: Web开发
构造ASP网页         为了创建ASP网页,打开你所熟悉的HTML 编辑器,输入列表B中的代码。确保 Window.Navigate行指向合适的文件夹。要了解其是如何工作的,在Internet Explorer中打开该页。一旦打开后,就会出现一个信息,告诉你XML已经创建了成功,并出现一个 Show 按钮,点击该按钮,IE显示出图E中的XML文档...

经验教程

835

收藏

14
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部