DOCS/journey/troubleshooting/251021_platum_crawler_recovery_and_neo4j_update.md
Claude-51124 22557e7132 docs: 오래된 트러블슈팅 아카이브 및 구조 정리
- 7-8월 초기 구축 문서 12개를 _archive/troubleshooting/2025_07-08_initial_setup/로 이동
- book/300_architecture/390_human_in_the_loop_intent_learning.md를 journey/research/intent_classification/로 이동 (개발 여정 문서)
- 빈 폴더 제거 (journey/assets/*)
2025-11-17 14:06:05 +09:00

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 뉴스 그래프를 갱신해야 함.

조치 요약

  1. 크롤러 및 유틸리티 복구

    • 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/ 등 접근 가능한 위치로 자동 선택.
    • startup_crawl/run_all_crawlers.sh를 순차 실행 방식으로 변경 (각 크롤러 별 로그).
  2. 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 기사 포함).
  3. 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로 갱신.
      • 결과 통계: NewsArticle 7,494개, MENTIONS 1,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 옵션을 명시적으로 사용해야 함.

다음 단계

  1. run_all_crawlers.sh에 Platum 페이지 수(예: 15) 조정 및 주기적 실행 스케줄 검토.
  2. TheVC robots 정책 변경 여부를 주기적으로 점검하고 허용 시 crawl_thevc.py 실행 결과 검증.
  3. 뉴스-스타트업 매칭 정확도를 높이기 위한 제목/본문 키워드 기반 보완 로직 검토.
  4. 필요 시 Neo4j 로더에 증분 로딩 옵션(날짜 필터)을 추가하여 실행 시간을 단축.