[原创]网站静态化生成HTML的一种偷懒方法

20182013-02-25

西安网站建设网站静态化生成HTML的一种偷懒方法,本文原创,转摘请注明出处:点墨网络 dianmo.cc

目前生成HTML静态页面常见的方法是使用模版文件,在生成时替换模版文件中的特定标签来实现静态化,西安网站建设团队点墨网络竭诚为您服务。

本人一直觉得这个办法比较繁琐,而且程序限制比较多,不够灵活,修改起来也比较麻烦。

下面说一下本人目前使用的偷懒的网页静态化方法(适合小型企业网站):

第一步:还是按我们的常规程序,把网站做成asp或者php等动态标记的代码;

第二步:静态化网站原理,静态过程很简单,我们做好的动态页面都会有一个访问地址,
比如:http://dianmo.cc/Website_Packages.asp,或者http://dianmo.cc/Website.asp?id=228;
我的方法就是通过采集程序,把做好的ASP网站,通过采集每一个页面保存成HTML文件实现静态化;别告诉我不知道每个页面的地址,循环舒服分类ID以及分类分页以及内容页再加首页,这就是全部网站的页面。

第三步:静态化具体操作方法
1、首页就不说了,这个简单,没有任何附加参数,内容页面虽然有参数,这个也简单,主要是列表页面,下面以ASP列表页面静态化为例。
2、以列表页面 http://dianmo.cc/article_list.asp?classid=125&page=2 为例,这个页面涉及两个参数,分类ID和翻页参数,我们要把article_list.asp?classid=125&page=2 转换成list_125_2.html格式的分页页面,这里可以首页获取分类页面记录数,然后循环采集输出页面1,2,3即可。
3、转换页面中的链接地址:
刚才生成的HTML文件中的链接不错误的,我们要把首页index.asp换成index.html;列表页 article_list.asp?classid=125&page=2换成list_125_2.html;内容页info.asp?id=100换成info_100.html,下面给出列表页的替换代码:
首先采集article_list.asp?classid=125&page=2代码保存为字符串str;通过str=RegUrl_list_page(str)替换其中的链接列表代码,内容页链接替换str=RegUrl_info(str),下面是两个操作替换的Function。
----------------------------------------------------------------
指向列表页的链接替换
Function RegUrl_list_page(TheStr) 'TheStr是采集到的 article_list.asp?classid=125&page=2的全部代码
Set RegEx = New RegExp
RegEx.IgnoreCase =True
regEx.Global = True'****这一句加上是全部替换,如果不加,只替换第一个
RegEx.Pattern = "article_list\.asp\?classid=(\d*)\&page=(\d*)"  '参数多的自行添加
RegUrl_list_page=RegEx.replace(TheStr,"../html/list_$1_$2.html")
End Function

指向内容页的链接替换
Function RegUrl_info(TheStr)
Set RegEx = New RegExp
RegEx.IgnoreCase =True
regEx.Global = True'****这一句加上是全部替换,如果不加,只替换第一个
RegEx.Pattern = "info\.asp\?id=(\d*)"
RegUrl_info=RegEx.replace(TheStr,"../html/info_$1.html")
End Function

----------------------------------------------------------------
替换完链接后,我们就可以把这个长字符str传保存为HTML文件了。

下面是分类页面采集以及替换链接的关键代码

-------采集部分----------------------------------------------------------
    papath=websiteUrl & "/article_list.asp?classid=" & rs("id") & "&page=" & t  '要采集的页面地址,这个地址需要完整,例如http://dianmo.cc/article_list.asp?classid=125&page=2
    str=getHTTPPage(papath) '执行采集操作,保存到字符串str

------------------------------------------------------------------------------    
---------替换链接---------------------------------------------------------
    str=RegUrl_info(str) '替换内容链接地址
    str=RegUrl_list_page(str) '替换翻页链接地址
    str=RegUrl_list(str) '替换默认分类页地址,这个地址是没带page参数的页面,注意和替换翻页链接地址前后顺序不能颠倒了
    str=replace(str,"index.asp","index.html") '
替换首页文件地址

------------------------------------------------------------------------------    
---------保存文件---------------------------------------------------------

    path_d="list" 'path_d生成后保存文件名的前缀
    f_id=rs("id") 'f_id是分类ID

if savetotxt_page(f_id,path_d,t,str)=True  then
'f_id是分类ID
'path_d生成后保存文件名的前缀
't是当前的翻页数
'str采集到的文件内容
  Response.write "成功"
  
else
  Response.write "失败"  
end if
------------------------------------------------------------------------------    

function savetotxt_page(id,path_d,t,str) '保存文件
Set objStream = Server.CreateObject("ADODB.Stream")
With objStream
.Open
.Charset = "utf-8"
.Position = objStream.Size
.WriteText=str
.SaveToFile server.mappath("../html/"&path_d&"_"&id&"_"&t&".html"),2  '保存到html目录下面
.Close
End With
if err <> 0 then
savetotxt_page = false
err.clear
else
savetotxt_page = true
end if
Set objStream = Nothing
end function


Function getHTTPPage(url)'采集URL全部代码,注意目标页面的编码
On Error Resume Next
dim http
set http=Server.createobject("Microsoft.XMLHTTP")
Http.open "GET",url,false
Http.send()
if Http.readystate<>4 then
exit function
end if
getHTTPPage=bytesToBSTR(Http.responseBody,"utf-8") '需要注意要采集页面的编码
set http=nothing
If Err.number<>0 then
Response.Write "<p align='center'><font color='red'><b>服务器获取文件内容出错</b></font></p>"
Err.Clear
End If
End Function
Function BytesToBstr(body,Cset)
dim objstream
set objstream = Server.CreateObject("adodb.stream")
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.Write body
objstream.Position = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Close
set objstream = nothing
End Function

通过本文您对西安网站建设有了进一步了解,本公司温馨提醒:找西安做网站公司,请选择手续齐全、业务精、服务好的正规公司。

工商网上亮照

版权所有:西安点墨网络科技有限公司 信息备案编号: 陕ICP备11004160号-1

客户服务电话:029-89640155 18991365125

公司地址:西安市雁塔区朱雀大街紫郡长安F3

Sitemap 网站地图 手机版

办公电话:029-89640155

服务热线:18991365125

客服信箱:vip@dianmo.cc

846461336327

西安点墨网络科技有限公司

版权所有:西安点墨网络科技有限公司 信息备案编号: 陕ICP备11004160号-1