ASP를 사용하여 좋아하는 도둑 수집 프로그램을 만들고 싶습니까? 다음 기사를 읽은 후 직접 만들 수 있습니다. 원칙
수집 프로그램은 실제로 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.vevb.com의 html 콘텐츠를 호출해 보세요.
희미한 URL, HTML
URL=http://www.vevb.com;
HTML = getHTTPage(Url)
응답.HTML 쓰기
%>
2. 일반적으로 사용되는 여러 기능
(1) InStr 기능
설명하다
특정 문자(string2)가 다른 문자열(string1)에서 처음 나타나는 위치를 반환합니다.
문법
InStr(문자열1, 문자열2)
예를 들어:
희미한 SearchString, SearchChar
SearchString =http://www.vevb.com ' 검색할 문자열입니다.
SearchChar = jb51 'jb51을 검색합니다.
MyBK = Instr(SearchString, SearchChar) ' Return 8
'찾을 수 없으면 0을 반환합니다. 예:
SearchChar = BK
MyBK = Instr(SearchString, SearchChar) ' 0을 반환합니다.
(2) 중간 기능
설명하다
문자열에서 지정된 수의 문자를 반환합니다.
문법
Mid(문자열, 시작, 끝)
예를 들어:
희미한 MyBK
MyBK = Mid (우리 BK(www.google) 디자인, 7, 12) '우리 BK(www.google) 디자인의 7번째 문자 뒤의 문자열 12자를 가로채기
'이때 MyBK의 가치는 www.google이 됩니다.
(3) 교체 기능
희미한 SearchString, SearchChar
SearchString = 저희 BK 디자인은 검색할 수 있는 웹사이트 구축 리소스 웹사이트의 문자열입니다.
SearchString =Replace(SearchString,BK 디자인,Www.google)
'이때 SearchString의 값은 우리의 Www.google이 웹사이트 구축 리소스 웹사이트가 됩니다.
3. 특정 영역의 HTML 코드를 가로채기
예를 들어, 다음 HTML 코드에서 <td>와 </td> 사이의 텍스트 부분만 가져오고 싶습니다.
<html>
<title>(www.google)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,over-start) '여기서 함수는 StrBK에서 시작 문자와 초과 문자 사이의 문자열을 추출하는 것입니다. 이전 섹션에서 mid 함수에 대해서도 설명했는데, over-start는 시작 위치와 끝 위치 사이의 거리, 즉 문자 수를 계산하는 것입니다.
response.write(RsBK) '마지막으로 프로그램에서 얻은 내용을 출력합니다.
%>
너무 기뻐하지 마십시오. 실행하면 페이지의 HTML 코드에 오류가 있음을 알 수 있습니다. 이유는 무엇입니까? 당신이 얻는 HTML 코드는 다음과 같습니다.
<td id=Content>BK(www.google) 구글 검색엔진은 많은 자료를 가지고 있는 사이트입니다...
그거 봤어? 불완전한 HTML 코드가 있습니다! 무엇을 해야 할까요? start=Instr(StrBK,<td id=Content>) 문은 StrBK에서 <td id=Content>의 위치 번호를 얻습니다. 이제 프로그램 문 뒤에 17을 추가하면 프로그램은 다음 위치를 가리킵니다. <td id=콘텐츠>.
좋습니다. 프로그램은 다음과 같이 변경됩니다.
<%
…
희미한 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 검색 엔진은 많은 리소스가 있는 사이트입니다...
그러나 실제로 교체 기능은 특정 문자열의 모든 연결을 제거하려는 경우에 적합하지 않을 수 있습니다. 연결에는 여러 유형이 포함될 수 있으며 그 중 특정 유형만 교체할 수 있습니다. 이를 대체할 또 다른 해당 대체 기능이 있습니까?
하지만 대신 정규식을 사용하여 이 작업을 수행할 수 있습니다. 여기서는 자세히 다루지 않겠습니다.
(1) 상대방 웹사이트의 페이지 전환을 우리 웹사이트로 어떻게 처리하나요?
대답은: 교체 기능과 페이지 매개변수 전달을 사용하는 것입니다.
예를 들어, 상대방의 페이지에는 <a href=2.htm>다음 페이지</a>와 같은 페이지 전환 코드가 포함되어 있습니다. 먼저 위에서 언급한 내용을 사용하여 이 문자열을 얻은 다음 교체 기능을 사용할 수 있습니다. RsBK= 교체( RsBK,<a href=,<a href=page.asp?Url=)
그런 다음 page.asp 프로그램에서 Url의 매개변수 값을 가져오고 마지막으로 수집 기술을 사용하여 다음 페이지에서 원하는 콘텐츠를 가져옵니다.
(2) 획득한 콘텐츠를 데이터베이스에 저장하는 방법
지면의 제약으로 인해 여기서는 간략하게 언급하겠습니다.
실제로는 매우 간단합니다.
데이터베이스에 쓸 때 SQL 삽입 오류를 방지하기 위해 도난당한 콘텐츠를 처리합니다. 예: replacement(String,','')
그런 다음 sql 명령을 실행하여 데이터베이스에 삽입하면 괜찮습니다 ~
위의 내용은 실제로 XMLHTTP 구성 요소의 일부 기본 응용 프로그램에 불과하며 원격 이미지를 로컬 서버에 저장하고 adodb.stream 구성 요소를 사용하여 획득한 데이터를 데이터베이스에 저장하는 등 많은 기능을 구현할 수도 있습니다. 컬렉션에는 다양한 기능과 용도가 있습니다.