用XML组件生成静态首页

9527已经超越神

9527已经超越神

2016-02-19 19:09

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

  第 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

      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

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

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

  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
  %

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

  
  文件function_class.asp的内容主要包括前面给出的函数和生成文件的类就可以了!
  运行makeindex.asp就可以生成htm文件了!

展开更多 50%)
分享

猜你喜欢

用XML组件生成静态首页

Web开发
用XML组件生成静态首页

动态网站首页的静态生成方法

ASP
动态网站首页的静态生成方法

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

用JSP生成静态页面

Web开发
用JSP生成静态页面

用libtemplate实现静态网页生成

PHP
用libtemplate实现静态网页生成

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

用libTemplate实现静态网页的生成

PHP
用libTemplate实现静态网页的生成

如何生成静态html

PHP
如何生成静态html

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

win8中Hyper-V功能怎么开启?

win8中Hyper-V功能怎么开启?

Win10手机预览版10166快速版更新内容汇总

Win10手机预览版10166快速版更新内容汇总
下拉加载更多内容 ↓