수집 프로그램은 실제로 XML의 XMLHTTP 구성 요소를 통해 다른 웹 사이트의 웹 페이지를 호출합니다. 예를 들어, 많은 뉴스 수집 프로그램은 Sina의 뉴스 웹 페이지를 호출하고 그 안에 있는 HTML 중 일부가 대체되고 광고도 필터링됩니다. 수집 프로그램을 사용하면 다음과 같은 장점이 있습니다. 수집 프로그램의 데이터는 다른 웹사이트에서 가져오고 웹사이트가 업데이트될 때마다 업데이트되므로 웹사이트를 유지 관리할 필요가 없습니다. 일반적으로 서버 리소스를 절약할 수 있습니다. 수집 프로그램에는 몇 개의 파일만 있고 모든 웹 콘텐츠는 다른 웹사이트에서 가져온 것입니다. 단점은 다음과 같습니다.
불안정합니다. 대상 웹사이트가 잘못되면 프로그램도 잘못됩니다. 대상 웹사이트를 업그레이드하고 유지관리하면 원격 호출이기 때문에 속도가 느려지므로 수집 프로그램도 그에 따라 수정해야 합니다. 로컬 서버에서 데이터를 읽는 것보다 확실히 느립니다.
1. 사례
다음은 ASP에서 XMLHTTP를 적용하는 방법을 간략하게 설명합니다.
다음과 같이 코드 코드를 복사합니다.
<%
'자주 사용하는 기능
'1. URL 대상 웹페이지 주소를 입력하고, 반환값 getHTTPPage는 대상 웹페이지의 HTML 코드입니다.
함수 getHTTPage(url)
희미한 HTTP
Http=server.createobject(MSXML2.XMLHTTP)를 설정합니다.
Http.open GET,URL,false
Http.send()
Http.readystate<>4이면
종료 기능
종료하면
getHTTPPage=bytesToBstr(Http.responseBody,GB2312)
http=아무것도 설정하지 않음
err.number<>0이면 err.Clear
종료 기능
2. Ranma 변환 xmlhttp를 사용하여 중국어로 웹페이지를 호출하면 adodb.stream 구성 요소를 통해 변환할 수 있습니다.
함수 BytesToBstr(본문)
희미한 객체 스트림
objstream = Server.CreateObject(adodb.stream) 설정
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.Write 본문
objstream.위치 = 0
objstream.Type = 2
objstream.Charset = GB2312 '원래 기본 UTF-8 인코딩을 GB2312 인코딩으로 변환합니다. 그렇지 않으면 XMLHTTP 구성 요소를 직접 사용하여 중국어 문자가 포함된 웹 페이지를 호출하면 코드가 깨집니다.
BytesToBstr = objstream.ReadText
objstream.Close
objstream = 아무것도 설정하지 않음
기능 종료
'아래 http://www.google의 html 콘텐츠를 호출해 보세요.
희미한 URL, HTML
URL=http://www.google;
HTML = getHTTPage(Url)
응답.HTML 쓰기
%>
2. 일반적으로 사용되는 여러 기능
InStr 기능
설명 다른 문자열(string1)에서 특정 문자(string2)가 처음 나타나는 위치를 반환합니다.
구문InStr(문자열1, 문자열2)
예를 들어:
희미한 SearchString, SearchChar
SearchString =http://www.google ' 검색할 문자열입니다.
SearchChar = blue1000 'blue1000을 검색합니다.
MyBK = Instr(SearchString, SearchChar) ' Return 8
'찾을 수 없으면 0을 반환합니다. 예:
SearchChar = BK
MyBK = Instr(SearchString, SearchChar) ' 0을 반환합니다.
중간 기능
설명: 문자열에서 지정된 수의 문자를 반환합니다.
SyntaxMid(문자열, 시작, 이상)
예를 들어:
희미한 MyBK
MyBK = Mid (저희 BK(www.google) 디자인, 7, 12) '저희 BK(www.google) 디자인의 7번째 문자 뒤의 문자열 12자를 가로채세요.' 이때 MyBK의 값은 www.google이 됩니다.
기능 교체
희미한 SearchString, SearchChar
SearchString = 저희 BK 디자인은 검색할 수 있는 웹사이트 구축 리소스 웹사이트의 문자열입니다.
SearchString =Replace(SearchString, BK design, Www.google)' 이때 SearchString의 값은 우리가 됩니다. Www.google은 웹사이트 구축 리소스 웹사이트입니다.
3. 특정 영역의 HTML 코드를 가로채기
예를 들어, 다음 HTML 코드에서 <td>와 </td> 사이의 텍스트 부분만 가져오고 싶습니다.
<html>
<title>BK(www.google) 구글 검색엔진</title>
<본문>
<테이블>
<tr><td></td></tr>
<tr><td id=Content>BK(www.google) 구글 검색엔진은 리소스가 많은 사이트입니다...</td></tr>
</table>
</body>
</html>
<%
…
희미한 StrBK, 시작, 이상, RsBK
StrBK=getHTTPPage(웹페이지 주소)
start=Instr(StrBK,<td id=Content>) '여기서 함수는 문자열의 시작 위치를 가져오는 것입니다. 누군가 여기에서 질문할 것입니다. 원래 코드는 <td id=Content>입니다. 여기서 <td id=Content>를 호출하는 이유는 무엇입니까? 답: asp에서는(정확히 말하면 VBscript에서는 두 개의 큰따옴표로 표시됩니다. 큰따옴표는 프로그램에 민감한 문자이기 때문입니다.) over=Instr(StrBK,…</td></tr>)'여기서 함수는 문자열 끝의 위치를 얻는 것입니다. '누군가가 여기서 다시 질문할 것입니다:( : 프로그램이 호출하는 HTML 코드 앞에 추가 점 세 개가 있는 이유는 무엇입니까...? 답변: 팁: 위에 </td></tr>도 있습니다. 줄에서 </td></ tr>를 사용하여 찾으면 프로그램은 위 줄의 </td></tr>를 가져올 문자열의 끝으로 잘못 간주합니다. RsBK=mid(StrBK,start, 오버 스타트). '여기서 함수는 StrBK에서 시작 문자와 초과 문자 사이의 문자열을 추출하는 것입니다. 또한 이전 섹션에서 mid 함수에 대해 언급한 것은 시작 위치와 끝 위치 사이의 거리를 계산하는 것입니다. , 즉 문자 수입니다.
response.write(RsBK) '마지막으로 프로그램에서 얻은 내용을 출력합니다.
%>
너무 기뻐하지 마십시오. 실행하면 페이지의 HTML 코드에 오류가 있음을 알 수 있습니다. 이유는 무엇입니까? 얻은 HTML 코드는 다음과 같습니다. <td id=Content>BK (www.google) Google 검색 엔진은 많은 리소스가 있는 사이트입니다...
그거 봤어? 불완전한 HTML 코드가 있습니다! 무엇을 해야 할까요? start=Instr(StrBK,<td id=Content>) 문은 <td id=Content>의 내용을 다음에서 가져옵니다.
StrBK의 위치 번호, 이제 프로그램 문 뒤에 17을 추가할 수 있습니다. 그러면 프로그램은 <td id=Content> 뒤의 문자에 대한 위치를 가리킵니다.
좋습니다. 프로그램은 다음과 같이 변경됩니다.
<%
…
희미한 StrBK, 시작, 이상, RsBK
StrBK=getHTTPPage(웹페이지 주소)
start=Instr(StrBK,<td id=콘텐츠>) + 17
over=Instr(StrBK,…</td></tr>) '여기서 7(-7)을 빼서 3점을 제거할 수도 있습니다.
RsBK=mid(StrBK,시작,오버스타트)
응답.쓰기(RsBK)
%>
괜찮아요. 우리가 원하는 것을 훔쳐서 우리만의 페이지에 표시해도 돼요, 하하~
4. 획득한 캐릭터의 삭제 또는 수정
RsBK의 BK(www.google)를 BK로 바꿉니다.
RsBK=교체(RsBK,BK(www.google),BK)
또는 (www.google)을 직접 삭제하세요.
RsBK=replace(RsBK,(www.google),)
좋습니다. 이제 RsBK는 다음과 같습니다. BK Google 검색 엔진은 리소스가 많은 사이트입니다... 그러나 실제로 교체 기능은 일부 상황에 적합하지 않을 수 있습니다. 예를 들어 특정 문자열의 모든 연결을 교체하려고 합니다. . 연결에는 여러 유형이 포함될 수 있으며 교체는 그 중 특정 하나만 교체할 수 있습니다. 해당 교체 기능으로 교체할 수는 없습니다.