1페이지에서는 Msxml2.ServerXMLHTTP를 사용하여 웹 콘텐츠를 캡처합니다. 2페이지에서는 ADODB.Stream을 사용하여 캡처된 콘텐츠를 파일에 기록합니다. ASP를 아는 사람이라면 누구나 ASP가 해석하고 실행하는 스크립트 언어라는 것을 알아야 합니다. , 스크립트 프로그램의 실행 효율성이 매우 낮은 경우가 많습니다. 사이트 방문 횟수가 상대적으로 높으면 서버가 많은 리소스를 소비하게 되며 결과적으로 사이트 액세스 속도가 급격히 떨어지게 됩니다. 실행 효율성을 향상시키는 프로그램이며, 또 다른 방법은 웹 사이트에서 자주 방문하는 페이지에 대해 정기적으로 정적 HTML 파일을 생성하는 것입니다. 이는 액세스 속도 문제를 매우 효과적으로 해결할 수 있습니다. 물론 서버 속도가 그다지 느리지 않다는 것이 전제입니다. 그렇지 않으면 무슨 일이 있어도 작동하지 않습니다. 아래에서는 Msxml2.ServerXMLHTTP 구성 요소를 사용하여 생성하려는 정적 웹 페이지를 가져온 다음 fso 또는 ado를 사용하여 파일을 작성하는 방법을 소개합니다. 이 기사의 예제는 모두 utf -8 인코딩을 사용하며, gb2312로 변경되면 해당 속성을 먼저 수정해야 합니다. 다음 기능을 제공하세요.
<!--'관련 질문은 http://www.downcodes.com을 방문하세요.
함수 GetURL(URL)
'주요 기능 다운로드
const 시간 간격=60
'시간 간격 설정
'다운로드 시간이 많이 느리다면 120초로 적어주세요
'응답.LCID=2052
const lResolve=6
'해결 도메인 이름 시간 초과(초)
const lConnect=6
'연결 사이트 시간 초과(초)
const lSend=6
'데이터 요청 시간 초과 보내기(초)
const l수신=40
'다운로드 데이터 시간 초과(초)
오류 발생 시 다음 재개
희미한 http
http = Server.CreateObject("Msxml2.ServerXMLHTTP") 설정
http.setTimeouts lResolve*1000,lConnect*1000,lSend*1000,lReceive*1000
http.Open "GET",URL,False
http.보내기
사례 선택 http.readyState
사례 0
GetURL="개체 초기화 실패"
Err.Clear
http=아무것도 설정하지 않음
종료 기능
사례 1
GetURL="도메인 이름 분석 시간 초과/연결 사이트 시간 초과"
Err.Clear
http=아무것도 설정하지 않음
종료 기능
사례 2
GetURL="데이터 요청 시간이 초과되었습니다. 서버에 결함이 있습니까?"
Err.Clear
http=아무것도 설정하지 않음
종료 기능
사례 3
GetURL="데이터 다운로드 시간 초과/대기 피드백 시간 초과"
Err.Clear
http=아무것도 설정하지 않음
종료 기능
사례 4
'다운로드 성공
선택 종료
http.status<>200이면
GetURL="다운로드 실패"&Err.description
Err.Clear
http=아무것도 설정하지 않음
종료 기능
종료 IF
http.status="200"이면
GetURL=http.ResponseText
'GetURL=저장파일()
종료 조건
http=아무것도 설정하지 않음
기능 종료
-->
주요 기능은 address 매개변수의 웹페이지 파일 내용을 캡처하는 것입니다. varia=GetURL(" http://www.downcodes.com ") 메소드를 사용하면 로컬 테스트 주소를 작성할 수 있습니다. Response.LCID=2052 속성은 Windows Server 2000에서는 지원되지 않으나 큰 문제는 아니며 정상적으로 사용 가능하다는 점 을 참고하시기 바랍니다. 필요에 따라 사용자 정의할 수 있는 시간 초과 속성도 있지만 시간을 너무 짧게 설정하지 않도록 주의하십시오. 그렇지 않으면 파일이 크거나 주소 액세스 속도가 느리면 크롤링이 실패할 수 있습니다! 생성하려는 웹페이지 파일의 콘텐츠를 크롤링하려면 이 기능을 사용하세요. 콘텐츠를 변수에 저장하고 파일에 기록될 때까지 기다립니다.
아래에 이 클래스가 있는데, 함수에서 방금 캡처한 내용을 해당 파일에 작성하면 생성하려는 웹페이지를 직접 생성할 수 있어 매우 편리하고 수정이 필요하지 않습니다. 원본파일!
클래스 Htmlmaker
'관련 질문은 http://www.downcodes.com 참조하세요.
'/************************
'/속성 설정 지침
'/foldename "폴더 이름"
'/ 설정하지 않으면 [년, 월, 일] 시간형식의 폴더명이 자동으로 생성됩니다.
'/ 파일명 "파일명" (접미사, 접미사 포함)
'/ 설정하지 않으면 [시, 분, 초] 시간 형식의 파일 이름이 자동으로 생성되며 접미사 .html
'/ Htmlstr "생성된 코드 내용"
'/************************
비공개 HtmlFolder,HtmlFilename,HtmlContent
공개 속성 letfoldename(str)
Html폴더=str
끝 속성
공용 속성 let Filename(str)
Html파일 이름=str
끝 속성
공용 속성 let Htmlstr(str)
HtmlContent=str
끝 속성
'/************************
'/파일명 변환 날짜 함수
'/*************************
개인 함수 Datename1(timestr)
희미한 s_year,s_month,s_day
s_year=연도(timestr)
len(s_year)=2이면 s_year="20"&s_year
s_month=월(timestr)
s_month<10이면 s_month="0"&s_month
s_day=일(timestr)
s_day<10이면 s_day="0"&s_day
날짜 이름1=s_year & s_month & s_day
종료 함수
개인 함수 Datename2(timestr)
어두워요 s_hour,s_min,s_ss
s_hour=시간(timestr)
s_hour<10이면 s_hour="0"&s_hour
s_분=분(timestr)
s_분<10이면 s_분="0"&s_분
s_ss=초(timestr)
s_ss<10이면 s_ss="0"&s_ss
Datename2 = s_시 & s_분 & s_ss
함수 종료
'/****************************
'/초기화
'/*************************
Private Sub class_initialize()
HtmlFolder=Datename1(현재)
HtmlFilename=Datename2(현재)&".html"
HtmlC
End Sub
Private Sub class_terminate()
서브 끝
'/************************
'/HTML 파일 생성
'/************************
Public Sub Htmlmake()
'오류 발생 시 다음 재개
희미한 파일 경로,fso,fout
파일 경로 = HtmlFolder&"/"&Html파일 이름
fso = Server.CreateObject("Scripting.FileSystemObject") 설정
fso.FolderExists(Server.MapPath(HtmlFolder)) 그렇다면
또 다른
fso.CreateFolder(Server.MapPath(HtmlFolder))
종료 조건
' fout = fso.CreateTextFile(Server.MapPath(filepath),true) 설정
' fout.WriteLine HtmlContent
'fout.close
희미한 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(파일 경로),2
objAdoStream.Close
끝 하위
'/************************
'/HTML 파일 삭제
'/************************
공개 하위 HTMLdel()
희미한 파일 경로, fso
파일 경로 = HtmlFolder&"/"&Html파일 이름
fso = CreateObject("Scripting.FileSystemObject") 설정
if fso.FileExists(Server.MapPath(filepath)) 그러면
fso.DeleteFile(Server.mappath(파일 경로))
종료하면
fso = 아무것도 설정하지 않음
End Sub
End 클래스
모두가 더 잘 배울 수 있도록 구체적인 예를 들어 보겠습니다.
웹사이트 주소는 http://www.downcodes.com/입니다.
먼저
default.asp인 홈페이지에서 정적 HTML 파일을 생성하려고 합니다.
파일: makeindex.asp
<!--#include file="function_class.asp"-->
<%
희미한 indexhtmlstr
indexhtmlstr=GetURL(" http://www.downcodes.com/default.asp ")
희미한 인덱스 파일 이름
indexfilename="index.htm"
희미한 동작 상태
len(indexhtmlstr) <200이면
Acti&indexfilename&""&indexhtmlstr&" 오류가 발생했습니다."
또 다른
희미한 myhtml
myhtml= 새 Htmlmaker 설정
myhtml.foldename = "../.."
myhtml.Filename = 인덱스파일 이름
myhtml.Htmldel
myhtml.Htmlstr = indexhtmlstr
myhtml.Htmlmake
myhtml=nothing 설정
acti&인덱스파일이름&"파일"
종료하면
response.write actionstat
%>
function_class.asp 파일의 내용에는 주로 위에 제공된 함수와 파일을 생성하는 클래스가 포함됩니다!
makeindex.asp를 실행하여 htm 파일을 생성하십시오!