피드로 돌아가기
I spent weeks scraping 50 websites—here's what finally worked
Dev.toDev.to
AI/ML

50개 웹사이트 파싱 구조를 LLM 기반 의도 정의 방식으로 전환하여 유지보수 제로 달성

I spent weeks scraping 50 websites—here's what finally worked

zhongqiyue2026년 6월 16일6intermediate

Context

50개 커머스 사이트의 서로 다른 HTML 구조와 Anti-bot 조치로 인한 파싱 복잡도 증가. BeautifulSoup, Selenium, Scrapy를 활용한 Rule-based 접근 방식은 사이트 변경 시마다 파서 수정이 필요한 낮은 확장성과 높은 유지보수 비용이 병목 지점으로 작용.

Technical Solution

  • Explicit Rule 기반 파싱에서 Intent-based Extraction 구조로 패러다임 전환
  • Puppeteer 및 전용 API를 통한 Dynamic Rendering HTML 획득으로 JavaScript 렌더링 이슈 해결
  • HTML을 Markdown으로 변환하여 Token 사용량 최적화 및 LLM 컨텍스트 윈도우 효율성 증대
  • 자연어 쿼리를 통한 필드 추출 로직 구현으로 개별 사이트별 CSS Selector 정의 과정 제거
  • LLM API의 Latency와 Cost 문제를 해결하기 위한 Local Model(Llama 3) 도입 및 Fine-tuning 검토
  • 데이터 신뢰성 확보를 위해 정규표현식 기반의 Sanity-check 레이어를 추가한 검증 파이프라인 설계

- 사이트별 구조 변경이 빈번한 다수 타겟 스크래핑 시 CSS Selector 대신 LLM Extraction 검토 - Token 비용 절감을 위해 raw HTML 대신 Markdown 변환 처리 적용 - Hallucination 방지를 위해 추출 값에 대한 데이터 타입 및 패턴 검증 로직 필수 포함 - 대량 데이터 처리 시 Latency 개선을 위해 Local LLM 기반의 Self-hosted 인프라 구축 고려

원문 읽기