여러 컬렉션 프로그램을 개발하고, 컬렉션 프로그램 코드도 많이 공부했기 때문에 컬렉션 프로그램의 원리에 대해서는 어느 정도 이해가 되었습니다. 먼저 수집 원칙에 대해 이야기해 보겠습니다.
수집 절차의 주요 단계는 다음과 같습니다.
1. 수집된 페이지의 내용을 획득합니다.
2. 획득 코드에서 사용된 모든 데이터를 추출합니다.
1. 수집된 페이지의 내용을 획득합니다.
수집된 페이지의 콘텐츠를 얻기 위해 현재 내가 알고 있는 일반적으로 사용되는 ASP 방법은 다음과 같습니다.
1. serverXMLHTTP 구성 요소를 사용하여 데이터를 얻습니다.
다음과 같이 코드 코드를 복사합니다.
함수 GetBody(웹 URL)
'객체 생성
희미한 ObjXMLHTTP
ObjXMLHTTP=Server.CreateObject(MSXML2.serverXMLHTTP)로 설정합니다.
'요청 파일, 비동기 형식
ObjXMLHTTP.Open GET,weburl,False
ObjXMLHTTP.send
ObjXMLHTTP.readyState <> 4 동안
ObjXMLHTTP.waitForResponse 1000
향하게 하다
'결과를 받아라
GetBody=ObjXMLHTTP.responseBody
'객체 해제
ObjXMLHTTP=아무것도 설정하지 않음
기능 종료
호출 방법:
GetBody(파일의 URLf 주소)
2. 또는 데이터를 얻기 위한 XMLHTTP 구성 요소
다음과 같이 코드 코드를 복사합니다.
함수 GetBody(웹URL)
'객체 생성
검색 설정 = CreateObject(Microsoft.XMLHTTP)
검색 포함
.Open Get, weburl, False, ,
.보내다
GetBody = .ResponseBody
끝
'객체 해제
검색 설정 = 없음
기능 종료
호출 방법:
GetBody(파일의 URLf 주소)
이러한 방식으로 얻은 데이터 콘텐츠는 사용하기 전에 인코딩 및 변환이 필요합니다.
다음과 같이 코드 코드를 복사합니다.
함수 BytesToBstr(body,Cset)
희미한 객체 스트림
objstream = Server.CreateObject(adodb.stream) 설정
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.Write 본문
objstream.위치 = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Close
objstream = 아무것도 설정하지 않음
기능 종료
호출 방법: BytesToBstr(변환할 데이터, 인코딩)' 인코딩은 GB2312 및 UTF-8로 일반적으로 사용됩니다.
2. 획득 코드에서 사용된 모든 데이터를 추출합니다.
현재 제가 가지고 있는 방법은 다음과 같습니다.
1. ASP에 내장된 MID 기능을 사용하여 필요한 데이터를 가로챕니다.
다음과 같이 코드 코드를 복사합니다.
함수 본문(wstr,start,over)
시작=Newstring(wstr,시작)
'처리해야 하는 데이터의 고유한 시작 태그를 설정합니다.
오버=Newstring(wstr,오버)
'시작에 해당하는 것은 처리해야 하는 데이터의 유일한 종료 태그입니다.
body=mid(wstr,start,over-start)
'표시되는 페이지의 범위를 설정
기능 종료
호출방식 : 본문(수집페이지의 내용, 시작태그, 종료태그)
2. 정규식을 사용하여 필요한 데이터를 얻습니다.
다음과 같이 코드 코드를 복사합니다.
함수 본문(wstr,start,over)
Set xiaoqi = New Regexp'set 구성 객체
xiaoqi.IgnoreCase = True'대소문자 무시
xiaoqi.Global = True'가 전체 텍스트 검색으로 설정됨
xiaoqi.Pattern = &start&.+?&over&'정규식
Set Matches =xiaoqi.Execute(wstr)'구성 실행 시작
xiaoqi=아무것도 설정하지 않음
몸=
경기의 각 경기에 대해
body=body&Match.Value '루프 일치
다음
기능 종료
호출방식 : 본문(수집페이지의 내용, 시작태그, 종료태그)
수집 절차에 대한 세부 아이디어:
1. 웹사이트의 페이지가 매겨진 목록 페이지의 각 페이지 주소를 얻습니다.
현재 대부분의 동적 웹사이트에는 다음과 같은 페이징 주소에 대한 규칙이 있습니다.
동적 페이지
첫 번째 페이지: index.asp?page=1
두 번째 페이지: index.asp?page=2
세 번째 페이지: index.asp?page=3
.....
정적 페이지
첫 번째 페이지: page_1.htm
두 번째 페이지: page_2.htm
세 번째 페이지: page_3.htm
.....
웹 사이트 페이징 목록 페이지의 각 페이지 주소를 얻으려면 다음과 같이 변수를 사용하여 각 페이지 주소의 변경 문자를 바꾸면 됩니다. 예: page_<%=&page&%>.htm
2. 수집된 웹사이트의 페이지가 매겨진 목록 페이지의 내용을 획득합니다.
3. 페이징 목록 코드에서 수집된 콘텐츠 페이지의 URL 연결 주소를 추출합니다.
페이지가 매겨진 페이지의 대부분의 콘텐츠 페이지 링크에는 다음과 같은 고정 규칙도 있습니다.
<a href=url1>연결 1</a> <br>
<a href=url2>연결 2</a> <br>
<a href=url3>연결 3</a> <br>
다음 코드를 사용하여 URL 연결 모음을 가져옵니다.
다음과 같이 코드 코드를 복사합니다.
xiaoqi = 새 정규식 설정
xiaoqi.IgnoreCase = 참
xiaoqi.Global = 참
xiaoqi.Pattern = .+?
일치 항목 설정 =xiaoqi.Execute(페이지 목록 내용)
xiaoqi=아무것도 설정하지 않음
URL=
경기의 각 경기에 대해
url=url&Match.값
다음
4. 수집 콘텐츠 페이지의 콘텐츠를 획득하고, 추출 표시에 따라 수집 콘텐츠 페이지에서 얻을 데이터를 가로챕니다.
동적으로 생성된 페이지이기 때문에 대부분의 콘텐츠 페이지에는 동일한 HTML 태그가 있습니다. 이러한 일반 태그를 기반으로 콘텐츠의 필수 부분을 추출할 수 있습니다.
좋다:
각 페이지에는 웹페이지 제목 <title>웹페이지 제목</title>이 있습니다. 위에서 작성한 MID 차단 기능을 사용하여 <title></title> 사이의 값을 가져오거나 정규식을 사용하여 가져올 수 있습니다.
예: body(<title>웹페이지 제목</title>,<title>,</title>)