현재 위치 - 회사기업대전 - 기업 정보 조회 - Java 다중 스레드 크롤러 구현?

Java 다중 스레드 크롤러 구현?

1. 요구 사항

1. 고정된 웹사이트 뉴스 제목, 콘텐츠, 게시 시간 및 출처를 정기적으로 캡처합니다.

2. 프로그램은 분산 및 멀티스레딩을 지원해야 합니다.

2. 디자인

1. 웹사이트는 수정되었지만 새로운 웹사이트가 추가될 수 있습니다. 미래에는 각 웹사이트의 콘텐츠 노드 디자인이 다르기 때문에 향후 확장을 촉진하려면 새로운 웹사이트를 추가하기 위한 동적 구성을 지원해야 하며, 이는 매번 개발 개입이 필요합니다.

2. 웹사이트 html 노드의 구조는 변경될 수 있으므로 구성 가능한 추출 노드도 지원해야 합니다.

3. 배포를 어떻게 지원하나요? 현재 가장 간단한 아이디어는 여러 컴퓨터에 프로그램을 배포하고 새 컴퓨터를 만들거나 배포 프로그램 중 하나에서 예약된 작업을 만들고 각 컴퓨터가 크롤링해야 하는 웹 사이트를 적시에 시작하는 것입니다. 현재는 지원할 수 없습니다. 동시에 여러 컴퓨터를 크롤링하는 것은 더 번거로우므로 분산 대기열을 사용해야 합니다. 따라서 당분간 웹사이트는 동시에 단일 시스템에서만 크롤링됩니다.

4. 멀티스레딩, 멀티스레딩은 어떻게 하나요? 다중 스레드 크롤링에는 두 가지 구현이 있습니다.

(1) 하나의 스레드는 하나의 웹사이트를 크롤링하고, 광범위한 크롤링을 위해 자체 URL 대기열을 유지하며, 동시에 여러 웹사이트를 크롤링합니다. 그림에 표시된 대로:

(2) 여러 스레드가 동시에 서로 다른 웹사이트를 크롤링합니다. 사진과 같이:

위의 두 가지 방법은 실제로 장점과 단점이 있습니다. 어떻게 선택하느냐에 따라 달라집니다.

방법 1: 각 스레드는 자체 대기열을 생성합니다. 그림의 대기열에는 동시 대기열이 필요하지 않습니다. 장점: 각 웹 사이트에는 웹 사이트를 크롤링하기 위한 하나의 스레드가 포함되어 있지 않습니다. 크롤링이 완료된 후 스레드를 재활용하고 삭제합니다. 제어하기 쉽습니다. 단점: 스레드 수를 확장할 수 없습니다. 예를 들어 웹 사이트가 3개만 있는 경우 최대 3개의 스레드만 열어 크롤링할 수 있으며 더 이상 열 수 없으므로 특정 제한이 있습니다.

방법 2: N개의 스레드가 N개의 웹사이트를 동시에 크롤링합니다. 스레드 수는 웹사이트 수와 연결되지 않습니다. 장점: 스레드 수는 조정될 수 있으며 수와 관련이 없습니다. 크롤링된 웹사이트의 수입니다. 4개, 5개, 10개 등 3개의 웹사이트를 열 수 있습니다. 이는 하드웨어 리소스에 따라 조정될 수 있습니다. 단점: 동시성을 제어하고 스레드를 소멸할 시기를 제어해야 합니다(thread1이 유휴 상태이고 대기열이 비어 있다고 해서 작업이 종료될 수 있다는 의미는 아니며 아마도 thread2의 응답이 아직 반환되지 않았을 수 있습니다). 크롤링된 웹사이트가 느리면 크롤러의 전체 프로세스가 느려집니다.

3. 구현

크롤링 방법은 스레드 수를 구성할 수 있기 때문에 결국 방법 2를 선택했습니다! 사용 기술: jfinal을 사용해 본 후 적합하지 않다는 것을 알았으나 프로젝트 진행 문제로 인해 계속 사용했습니다. Maven 프로젝트 관리 jettyserver mysql eclipse 개발 프로젝트가 집중해야 할 어려움은 다음과 같습니다. (1) 웹 사이트를 정상적으로 크롤링하기 위해 N 스레드를 합리적으로 제어하고 모든 스레드 작업이 완료되고 크롤링해야 할 큐가 비어 있을 때 N 스레드 동시에 나가고 파괴하십시오. (2) 웹사이트마다 디자인 노드가 다릅니다. 각 웹사이트가 크롤링해야 하는 URL과 크롤링된 노드 콘텐츠의 위치를 ​​html 노드에 구성해야 합니다. (3) 개인화된 콘텐츠 처리. HTML 구조 설계 문제로 인해 Beida Jade Bird는 캡처된 콘텐츠에 중복된 HTML 태그가 있을 수 있다고 생각하거나 중복된 콘텐츠를 처리하는 방법을 설명합니다.

copyright 2024회사기업대전