웹 크롤러를 생성 할 때 주요 고려 사항은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/32366

  •  09-06-2019
  •  | 
  •  

문제

저는 오늘 웹 크롤러를 만들고 맞춤 설정하는 것에 대해 생각하기 시작했으며 웹 크롤러 / 로봇 에티켓에 대해 거의 알지 못합니다.에티켓에 관한 글의 대부분은 오래되고 어색해 보이므로 웹 개발자 커뮤니티에서 현재의 (실용적인) 통찰력을 얻고 싶습니다.

저는 "사이트 XYZ의 마크 업이 조건 ABC를 충족합니까?"라는 매우 간단한 목적으로 "웹"을 탐색하기 위해 크롤러를 사용하고 싶습니다.

이렇게하면 많은 질문이 제기되지만 먼저 해결해야 할 두 가지 주요 질문은 다음과 같습니다.

  • 처음부터 약간 "iffy"한 느낌이 듭니다. 이런 종류의 것이 허용 되나요?
  • 사람을 화나게하지 않으려면 크롤러는 어떤 특정 사항을 고려해야합니까?
도움이 되었습니까?

해결책

robots.txt를 준수합니다 (이미 언급 한 것처럼 너무 공격적이지 않음).

사용자 에이전트 문자열에 대해 생각하고 싶을 수 있습니다. 사용자 에이전트 문자열은 현재 수행중인 작업과 연락 방법에 대해 미리 알 수있는 좋은 장소입니다.

다른 팁

WillDean과 Einar의 좋은 답변 외에도 HTTP 응답 코드의 의미와 각 코드를 만날 때 크롤러가해야 할 일에 대해 읽어 보는 것이 좋습니다.성능 및 여부에 관계없이 일부 사이트에서 금지됩니다.

유용한 링크 :

HTTP / 1.1 : 상태 코드 정의

Aggregator 클라이언트 HTTP 테스트

위키 백과

로봇이 누구 / 무엇을 / 왜 크롤링하는지 설명하는 URL을 사용자 에이전트 문자열에 포함해야합니다.

모든 좋은 점, 여기서 만든 점입니다.또한 동적으로 생성 된 Java 및 JavaScript 링크, 매개 변수 및 세션 ID, 작은 따옴표 및 큰 따옴표 이스케이프, 상대 링크에서 실패한 시도 (../../ 사용하여 루트 디렉토리를지나 가기), 대소 문자 구분을 처리해야합니다.프레임, 리디렉션, 쿠키 ....

저는 며칠 동안 계속할 수 있습니다.이 대부분을 다루는 로봇 체크리스트 가 있습니다.제가 할 수있는 일에 기꺼이 답변 해드립니다.

또한 오픈 소스 로봇 크롤러 코드를 사용하는 것도 고려해야합니다.이 코드는 이러한 모든 문제에 대해 큰 도움이되기 때문입니다.이에 대한 페이지도 있습니다. 오픈 소스 로봇코드 .도움이 되었기를 바랍니다.

또한 봇 메타 태그를 따르는 것을 잊지 마십시오 : http://www.w3.org/TR/html4/appendix/notes.html#hB.4.1.2

생각할 또 다른 사항-스파이더 페이지가 존재하지 않거나 오류가 있는지 너무 성급하게 결정하지 마십시오.유지 보수 작업으로 인해 일부 페이지가 오프라인 상태이거나 단기간 내에 수정되는 오류입니다.

부하가 얼마나 많이 발생하는지 고려하는 것이 매우 중요하다고 생각합니다.예를 들어 크롤러가 단일 사이트의 모든 개체를 한 번에 어느 정도 요청하면 특정 사이트에 대한로드 문제가 발생할 수 있습니다.

즉, 크롤러가 너무 공격적이지 않은지 확인하세요.

완벽하게 접근 할 수 있습니다. 각 세션에 대해 각 페이지를 한 번만 방문해야합니다.기술적으로 검색 봇을 만들 때 robots.txt 및 no-cache 규칙을 준수해야합니다.사람들은 IP를 차단하여 필요한 경우 특별히 봇을 차단할 수 있습니다.

당신은 내가 말할 수있는 한 소스 코드만을 찾고 있으므로 스타일 시트의 경우 <link>를 따르고 JavaScripts의 경우 <script src="..."></script>를 따르는 무언가를 만들고 싶을 것입니다.

부하는 큰 고려 사항입니다.특정 사이트를 크롤링하는 빈도와 목표를 달성하는 데 필요한 가장 기본적인 정보를 제한합니다.텍스트를 찾고 있다면 모든 이미지를 다운로드하지 마세요.

물론 robots.txt를 따르되 사용자 에이전트 문자열에 정확한 연락처 정보가 포함되어 있는지 확인하고 수행중인 작업과 수행 방법을 설명하는 웹 페이지 링크를 포함해야합니다.웹 관리자가 귀하의 많은 요청을보고 궁금하다면 유익한 웹 페이지를 통해 많은 질문에 답할 수 있습니다.

스파이더가 스팸 사이트에 갇히지 않도록 사이트 / 도메인 또는 기타 항목 (IP 범위, ASN 등)에 몇 가지 기능을 추가해야합니다.

시간 초과 및 동작을 많이 제어하는 HTTP 구현이 필요합니다.많은 사이트에서 유효하지 않은 응답, 거대한 응답, 쓰레기 헤더를 다시 보내거나 응답없이 연결을 무기한 열어 둘 것으로 예상합니다.

또한 '페이지가 존재 함'을 의미하는 200 상태를 신뢰하지 마세요.내 경험상 상당수의 사이트에서 "찾을 수 없음"또는 기타 오류에 대해 200 개를 다시 보냅니다 (대용량 HTML 문서와 함께).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top