A página 1 usa Msxml2.ServerXMLHTTP para capturar conteúdo da web. A página 2 usa ADODB.Stream para gravar o conteúdo capturado em um arquivo. A página 3 fornece um exemplo específico. , e a eficiência de execução dos programas de script costuma ser muito baixa. Se o número de visitas ao site for relativamente alto, o servidor consumirá muitos recursos. O resultado é que a velocidade de acesso ao site cai rapidamente. o programa para melhorar a eficiência de execução, e outro método é gerar regularmente arquivos html estáticos para páginas altamente visitadas no site, o que pode resolver de forma muito eficaz o problema de velocidade de acesso. , caso contrário, não funcionará, não importa o que aconteça. Abaixo, apresento um método para usar o componente Msxml2.ServerXMLHTTP para capturar a página da web estática que você deseja gerar e, em seguida, usar fso ou ado para gravá-la. deve-se observar que todos os exemplos neste artigo usam codificação utf -8. Se for alterado para gb2312, os atributos correspondentes precisam ser modificados. Primeiro, forneça a seguinte função:
<!--'Para questões relacionadas, visite http://www.downcodes.com
Função GetURL(URL)
'Baixar função principal
const TimeInterval = 60
'Definir intervalo de tempo
'Se o tempo de download for muito lento, escreva como 120 segundos
'Resposta.LCID=2052
const lResolve=6
'Tempo limite de resolução do nome de domínio, segundos
const lConectar=6
'Tempo limite do site de conexão, segundos
const lEnviar=6
'Tempo limite de solicitação de envio de dados, segundos
const lReceber=40
'Tempo limite de download de dados, segundos
em caso de erro retomar Próximo
Escurecer http
Definir http = Server.CreateObject("Msxml2.ServerXMLHTTP")
http.setTimeouts lResolver*1000,lConectar*1000,lEnviar*1000,lReceber*1000
http.Abrir "GET",URL,Falso
http.Enviar
Selecione o caso http.readyState
Caso 0
GetURL="Falha na inicialização do objeto"
Err.Limpar
definir http = nada
Função de saída
Caso 1
GetURL="Tempo limite de análise de nome de domínio/tempo limite do site de conexão"
Err.Limpar
definir http = nada
Função de saída
Caso 2
GetURL="A solicitação de dados expirou. O servidor está com defeito?"
Err.Limpar
definir http = nada
Função de saída
Caso 3
GetURL="Tempo limite de download de dados/tempo limite de espera de feedback"
Err.Limpar
definir http = nada
Função de saída
Caso 4
'Download realizado com sucesso
Finalizar seleção
Se http.status<>200 então
GetURL="Falha no download"&Err.description
Err.Limpar
definir http = nada
Função de saída
TERMINAR SE
Se http.status="200" então
GetURL=http.ResponseText
'GetURL=SalvarArquivo()
Terminar se
definir http = nada
Função final
-->
A função principal é capturar o conteúdo do arquivo da página web do parâmetro de endereço. Use o método varia=GetURL(" http://www.downcodes.com "). Se for um endereço de teste local, você pode escrevê-lo. como http://localhost/default.asp e use esta função. Deve-se observar que o atributo Response.LCID=2052 não é suportado no Windows Server 2000, mas não é um grande problema e pode ser usado normalmente, desde que. está comentado! Existem também alguns atributos de tempo limite que podem ser personalizados conforme necessário, mas tome cuidado para não definir o tempo muito curto, caso contrário, se o arquivo for grande ou a velocidade de acesso ao endereço for lenta, o rastreamento poderá falhar! Use esta função para rastrear o conteúdo do arquivo da página da web que você deseja gerar. Armazene o conteúdo em uma variável e espere ser gravado no arquivo.
Esta classe é fornecida a seguir, que é usada para escrever o conteúdo recém-capturado pela função no arquivo correspondente, e pronto, gere diretamente a página web que deseja gerar, é muito conveniente e não precisa modificar o! arquivo original!
Classe Htmlmaker
'Por favor, faça perguntas relacionadas Consulte http://www.downcodes.com
'/************************
'/Instruções de configuração de propriedade
'/foldename "nome da pasta"
'/ Se não definido, um nome de pasta no formato de hora [ano, mês, dia] será gerado automaticamente
'/ Nome do arquivo "Nome do arquivo" (incluindo sufixos e sufixos)
'/ Se não definido, um nome de arquivo no formato de hora [horas, minutos, segundos] será gerado automaticamente, com o sufixo .html
'/ Htmlstr "Conteúdo do código gerado"
'/************************
Privado HtmlFolder,HtmlFilename,HtmlContent
Propriedade pública let foldename(str)
HtmlFolder=str
Propriedade final
Propriedade pública let Filename(str)
HtmlNome do arquivo=str
Propriedade final
Propriedade pública let Htmlstr(str)
HtmlContent=str
Propriedade final
'/************************
'/Função de data de conversão de nome de arquivo
'/***********************
Função privada Datename1(timestr)
escuro s_ano,s_mês,s_dia
s_ano=ano(timestr)
se len(s_ano)=2 então s_ano="20"&s_ano
s_mês=mês(timestr)
se s_mês<10 então s_mês="0"&s_mês
s_day=dia(timestr)
se s_day<10 then s_day="0"&s_day
Datename1=s_ano & s_mês & s_dia
Função Final
Função Privada Datename2(timestr)
escurecer s_hora,s_minuto,s_ss
s_hora=hora(timestr)
se s_hora<10 então s_hora="0"&s_hora
s_minuto=minuto(timestr)
se s_minuto<10 então s_minuto="0"&s_minuto
s_ss=segundo(timestr)
se s_ss<10 então s_ss="0"&s_ss
Datename2 = s_hora & s_minuto & s_ss
Função final
'/*************************
'/ inicialização
'/***********************
Subclasse Privada_initialize()
HtmlFolder=Datename1(agora)
HtmlFilename=Datename2(agora)&".html"
HTMLC
Fim Sub
Privado Sub class_terminate()
Finalizar sub
'/************************
'/Geração de arquivo HTML
'/**********************
Public Sub Htmlmake()
'Em caso de erro, retomar próximo
dim caminho do arquivo,fso,fout
caminho do arquivo = HtmlFolder&"/"&HtmlFilename
Definir fso = Server.CreateObject("Scripting.FileSystemObject")
Se fso.FolderExists(Server.MapPath(HtmlFolder)) Então
Outro
fso.CreateFolder(Server.MapPath(HtmlFolder))
Terminar se
' Definir fout = fso.CreateTextFile(Server.MapPath(filepath),true)
' fout.WriteLine HtmlContent
'fout.close
dim objFSO,adTypeText,adSaveCreateOverWrite,Charsett,objAdoStream
Charset = "utf-8"
definir objAdoStream = Server.CreateObject("ADODB.Stream")
adTypeText = 2
adSaveCreateOverWrite = 2
objAdoStream.Type = adTypeText
objAdoStream.Open
objAdoStream.Charset = Charset
objAdoStream.WriteText(HtmlContent)
objAdoStream.SaveToFile Server.MapPath(caminho do arquivo),2
objAdoStream.Fechar
End Sub
'/***********************
'/Excluir arquivo HTML
'/************************
SubHtmldel público()
dim caminho do arquivo,fso
caminho do arquivo = HtmlFolder&"/"&HtmlFilename
Definir fso = CreateObject("Scripting.FileSystemObject")
se fso.FileExists(Server.MapPath(filepath)) então
fso.DeleteFile(Server.mappath(caminho do arquivo))
terminar se
Defina fso = nada
Classe
final subfinal
Para que todos possam aprender melhor, vamos dar um exemplo específico:
Temos um endereço de site http://www.downcodes.com/.
Queremos gerar um arquivo html estático a partir de sua página inicial, que é default.asp
. crie-o. Arquivo: makeindex.asp
<!--#include file="function_class.asp"-->
<%
dim indexhtmlstr
indexhtmlstr=GetURL(" http://www.downcodes.com/default.asp ")
dim nome do arquivo de índice
indexfilename="index.htm"
escurecer status de ação
se len(indexhtmlstr) <200 então
Acti&indexfilename&"encontrou erro "&indexhtmlstr&""
outro
escurecer meuhtml
definir meuhtml = novo Htmlmaker
meuhtml.foldename = "../.."
meuhtml.nome do arquivo = nome do arquivo de índice
meuhtml.Htmldel
meuhtml.Htmlstr = indexhtmlstr
meuhtml.Htmlmake
definir meuhtml = nada
acti&indexfilename&"arquivo"
terminar se
resposta.write actionstat
%>
O conteúdo do arquivo function_class.asp inclui principalmente as funções fornecidas acima e a classe que gera o arquivo!
Execute makeindex.asp para gerar o arquivo htm!