3.1 KiB
3.1 KiB
2025-10-21 Platum/TheVC 크롤러 복구 및 Neo4j 뉴스 데이터 갱신
작성일: 2025-10-21
작성자: Codex (51123 서버 관리자)
상태: 완료
배경
- Platum/TheVC 크롤러가 robots.txt 차단으로 판단되어 삭제된 상태라 최신 뉴스가 누락되고 있었음.
- 기존
crawler_utils.py가 BOM이 포함된 robots.txt를can_crawl=False로 잘못 해석하고, 브라우저 전용 압축(br)을 사용해 본문 파싱에 실패하는 문제가 확인됨. - 최신 Platum 데이터 15페이지 분량을 확보한 뒤 Neo4j 뉴스 그래프를 갱신해야 함.
조치 요약
-
크롤러 및 유틸리티 복구
startup_crawl/crawl_platum.py,startup_crawl/crawl_thevc.py를 재작성하여 robots 허용 여부를 재검증하고, 요청 간 랜덤 대기(3~6초)로 서버 부하를 낮춤.startup_crawl/crawler_utils.py에서- BOM 제거 후
RobotFileParser.parse()로 직접 로딩, Accept-Encoding: gzip, deflate로 조정하여 브로틀리 응답 문제 해결,- 로그 경로를
/mnt/hdd/data/DATA/startup_crawl/logs/등 접근 가능한 위치로 자동 선택.
- BOM 제거 후
startup_crawl/run_all_crawlers.sh를 순차 실행 방식으로 변경 (각 크롤러 별 로그).
-
Platum 최신 데이터 수집
- 실행:
cd /mnt/hdd/data/DATA/startup_crawl && python3 crawl_platum.py 15 - 생성 파일:
startup_crawl/platum/articles_page_1_to_15.json(총 180건, 2025-10-21 기사 포함).
- 실행:
-
Neo4j 로더 개선 및 실행
load_all_to_neo4j.py에--reset,--news-only옵션과extract_articles()헬퍼 추가.- 뉴스 JSON 구조가 dict/list 혼재된 경우에도 URL 기준 dedupe 수행.
- 실행:
python3 load_all_to_neo4j.py --news-only- 기존 그래프 유지, 뉴스만 MERGE로 갱신.
- 결과 통계:
NewsArticle7,494개,MENTIONS1,574개.
결과 및 영향
- Platum/TheVC 크롤러가 복구되어 향후
run_all_crawlers.sh실행 시 해당 소스가 정상 반영됨. - Neo4j 뉴스 노드가 최신 Platum 기사까지 포함하도록 갱신됨.
load_all_to_neo4j.py를 배치에서 호출할 경우 입력 대기 없이 옵션으로 제어 가능해짐.
주의 사항
- TheVC는 여전히
Disallow: /정책이므로 실제 크롤링은 robots 허용 시점에만 진행해야 함(스크립트는can_crawl검사 후 자동 중단). - 크롤러 실행 전
/mnt/hdd/data/DATA/startup_crawl/platum/checkpoint.json을 확인하여 필요한 범위(페이지 수)를 조절할 것. - Neo4j 로딩 시 전체 리셋이 필요하면
--reset옵션을 명시적으로 사용해야 함.
다음 단계
run_all_crawlers.sh에 Platum 페이지 수(예: 15) 조정 및 주기적 실행 스케줄 검토.- TheVC robots 정책 변경 여부를 주기적으로 점검하고 허용 시
crawl_thevc.py실행 결과 검증. - 뉴스-스타트업 매칭 정확도를 높이기 위한 제목/본문 키워드 기반 보완 로직 검토.
- 필요 시 Neo4j 로더에 증분 로딩 옵션(날짜 필터)을 추가하여 실행 시간을 단축.