21P by neo 2달전 | favorite | 댓글 2개
  • Crawlee는 웹 스크래핑과 브라우저 자동화를 위한 Python 라이브러리
  • 신뢰할 수 있는 크롤러를 빠르게 구축하는 데 도움이 됨
  • AI, LLM, RAG, GPT를 위한 데이터 추출에 사용 가능
  • 웹사이트에서 HTML, PDF, JPG, PNG 등의 파일을 다운로드할 수 있음
  • BeautifulSoup, Playwright, 순수 HTTP와 함께 작동
  • Headful 모드와 Headless 모드 모두 지원
  • 프록시 로테이션 기능 제공

특징

  • HTTP 및 Headless 브라우저 크롤링을 위한 통합 인터페이스 제공
  • 사용 가능한 시스템 리소스를 기반으로 자동 병렬 크롤링 수행
  • 타입 힌트를 사용하는 Python으로 작성되어 IDE 자동 완성 기능 향상 및 버그 감소
  • 오류 발생 시 또는 차단될 때 자동 재시도 기능
  • 통합 프록시 로테이션 및 세션 관리 기능
  • 구성 가능한 요청 라우팅 - URL을 적절한 핸들러로 직접 전달
  • 크롤링할 URL에 대한 영구 큐
  • 테이블 형식 데이터와 파일 모두에 대한 플러그형 스토리지
  • 강력한 오류 처리 기능

Scrapy와의 차이점

  • Crawlee는 기본적으로 Headless 브라우저 크롤링(Playwright)을 지원함
  • 간단하고 우아한 인터페이스 - 10줄 미만의 코드로 스크래퍼를 설정 가능
  • 완전한 타입 힌트 적용
  • 표준 Asyncio를 기반으로 함

GN⁺의 의견

  • Crawlee는 웹 스크래핑과 크롤링을 위한 강력한 도구로 보임. 특히 Headless 브라우저 기반 크롤링을 기본적으로 지원하는 점이 큰 장점으로 생각됨.
  • 간단한 인터페이스와 적은 코드량으로 크롤러를 만들 수 있어 생산성이 높아 보임. 또한 타입 힌트를 적극 활용하여 개발 경험이 향상되고 오류 발생 가능성이 낮아짐.
  • 데이터 추출을 위해 크롤링이 필요한 프로젝트라면 Crawlee를 적극 고려해 볼 만함. 특히 JavaScript 렌더링이 필요한 웹 페이지를 크롤링해야 한다면 PlaywrightCrawler가 유용할 것으로 보임.
  • 다만 매우 대규모의 크롤링이 필요하거나 실시간성이 중요한 경우에는 분산 크롤링을 지원하는 Scrapy나 다른 도구를 사용하는 것이 나을 수 있음.
  • 크롤링 정책이나 법적 이슈에 대해서도 충분히 검토한 후 사용하는 것이 바람직해 보임.

node 지원하는건 알았는데 python도 지원하나보네요. 우지보수가 필요한 스크래퍼라면 프레임웍을 진지하게 고민해봐야겠습니다 ㅎㅎ

Hacker News 의견
  • 기존 기능을 문서화하는 것이 중요함. 아무리 훌륭한 웹 스크래핑 플랫폼이라도 사용자만 이해할 수 있으면 소용없음

    • 예를 들어, tiered_proxy_urls: list[list[str]] | None = None의 의미를 이해하기 어려움
    • 예제는 .csv, .xlsx 테이블 등 모든 데이터를 찾아 다운로드하는 방법을 보여줘야 함
    • 단순히 텍스트를 가져오고 URL을 검색하는 것은 누구나 할 수 있음
    • 1000개의 다른 항목을 파싱하고 다른 엔드포인트를 통해 3-5개의 항목을 얻는 예제가 필요함
    • 이 도구가 프레임워크인지 자동화 도구인지 명확하지 않음
    • 웹 스크래핑 옵트아웃 프로토콜(예: Robots.txt, HTTP 및 콘텐츠 태그)을 지원하는지 궁금함. 특히 EU의 DSM 지침 이후 중요해짐
  • Apify/Crawlee에 감사함. 오랜 Node.js 사용자로서 이 라이브러리가 가장 잘 작동했음

  • 프로젝트를 위해 스택을 찾다가 Crawlee를 발견함. Python 라이브러리를 원했지만 Typescript로 Crawlee를 사용하여 일주일 만에 프로젝트를 완료함

    • API가 지금까지 사용한 어떤 Python 스크래핑 API보다 훨씬 나음
    • Playwright와의 통합으로 프로그래밍 경험이 매우 편리해짐
    • 프론트엔드 렌더링 웹사이트와 수정된 XHR 응답을 캡처하는 작업이 잘 작동함
    • Apify 플랫폼을 사용하여 확장할 계획임
  • Scrapy와 어떻게 다른지 궁금함

  • 다른 라이브러리에서 전환할 이유가 무엇인지 궁금함. 자체 크롤러를 구축했지만 특별히 독특한 점을 찾지 못함

  • 모던 Python 코드가 멋져 보임

    • 예제 코드에서 const data = await crawler.get_data()는 Javascript처럼 보임. 언더스코어가 빠진 것 같음
  • 테스트 케이스에서 더 많은 코드 스니펫을 문서화 예제로 가져오는 것을 제안함. 좋은 작업임

  • 스크래핑 도구는 언제나 환영받음. 개인 프로젝트에 사용해 볼 예정임. AI 덕분에 현재 스크래핑은 금광 시대의 삽을 파는 것과 같음