PHP 대용량 크롤링에 대한 고찰 > 자유게시판

자유게시판

PHP 대용량 크롤링에 대한 고찰 정보

PHP 대용량 크롤링에 대한 고찰

본문

제작의뢰 글을 보다가, 나라면 어떤식으로 처리했을까, 문제를 어떤식으로 해결할수 있는가? 를 고민해보았습니다.

 

사전 조건

1.  그누보드로 된 단일 사이트

2. 이미지가 포함된 게시물 대략 8000개

3. 트래픽 제한 있음(누락된게 이것 때문일듯)

4. CF 방어 있을수 있음.(이건 다른 이슈임으로 다음에..)

5. 동시성 문제 있음

6. 비로그인 상태에서 크롤링 가능

 

구현전 체크사항

1.  트래픽 제한이 있음으로 proxy 를 여러개 설정해야함.

    - 트래픽 제한이 어디까지인지 확인 필요

    - 초기에 전체 게시물 크롤링 시에만 프록시가 필요할수 있음.

2. 게시물이 많고, 게시물마다 용량이 있을수 있음으로 동시 크롤링(멀티) 가능해야함.

 

 

구현방법

1. 게시물 목록 크롤링 처리

   - 단일 처리로 처음부터 마지막 페이지까지 크롤링

   - 게시물 번호와, url 링크, 제목, 등을 db에 1차 저장. 내용(첨부파일목록등)은 빈상태.

 2. 1에서 수집된 목록을 기준으로 본문 크롤링

    - 동시 크롤링 처리(limit 제한 수치에 맞게 proxy별로 설정하여 진행)

    - 첨부파일 목록등을 크롤링 처리

    - 첨부 파일 목록을 게시물번호, 본문텍스트, 첨부파일 index, 첨부파일명, 첨부파일용량, 처리상태 등으로 db에 저장

 3. 2에서 수집된 데이타를 기준으로 첨부파일 크롤링

      - 용량 제한에 맞춰 속도 제어

      - 크롤링 속도를 위해 동시 처리(proxy를 사용)

      - 처리된 이미지별로 db에 상태값, 파일용량등을 http status 업데이트 처리

4. 관리자 페이지 

      - 파싱 url, 처리상태, 상태값 등을 관리자가 조회할수 있도록 생성

      - 자동 파싱시 오류가 발생한 페이지를 수동으로 재 크롤링할수 있도록 기능 추가

      - proxy ip 설정화면 추가

      - 차된 된 경우에 proxy ip만 변경하여 처리할수 있도록 함.

5. 부가 기능

    - 신규 게시물이나, 차단 이슈가 발생할시, 텔레그램 알림 처리

 

* PHP에서 위의 기능을 구현하기 위해서는 guzzle로 크롤링처리, curl은 한계 있음

  - guzzle의 promise 기능으로 동시 처리

  - guzzle의 proxy 기능사용하여 여러 아이피로 크롤링 처리

  - simple_dom 파서 사용, 정규식 사용

 

ps) 위와 같이 작업하면,  클라이언트가 만족하겠죠?????

추천
0

댓글 2개

크롤링 강의한번 해주세요 ㅎㅎ
저도 해외구매대행 업체소속일때 해외상품 재고체크 시스템 개발한답시고 이리저리 많이 손대보긴했는데 모르는게 많네요.  guzzle 좋네요 ㅎㅎ
전체 117 |RSS
자유게시판 내용 검색

회원로그인

진행중 포인트경매

  1. 참여87 회 시작24.04.12 12:32 종료24.04.19 12:32
  2. 참여52 회 시작24.04.12 12:32 종료24.04.19 12:32
(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT