# Crawlee for Python – 웹 스크래핑 및 브라우저 자동화 라이브러리

> Clean Markdown view of GeekNews topic #15782. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=15782](https://news.hada.io/topic?id=15782)
- GeekNews Markdown: [https://news.hada.io/topic/15782.md](https://news.hada.io/topic/15782.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-07-11T10:02:44+09:00
- Updated: 2024-07-11T10:02:44+09:00
- Original source: [crawlee.dev](https://crawlee.dev/python/)
- Points: 21
- Comments: 2

## Summary

웹 스크래핑과 브라우저 자동화를 위한 강력한 Python 라이브러리로, 간단한 인터페이스와 적은 코드량으로 신뢰할 수 있는 크롤러를 빠르게 구축할 수 있습니다. 특히 Headless 브라우저 기반 크롤링을 기본적으로 지원하며, 사용 가능한 시스템 리소스를 기반으로 자동 병렬 크롤링을 수행합니다. JavaScript 렌더링이 필요한 웹 페이지를 크롤링해야 하는 프로젝트에 유용하며, 데이터 추출을 위한 다양한 기능을 제공합니다.

## Topic Body

- 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나 다른 도구를 사용하는 것이 나을 수 있음.   
- 크롤링 정책이나 법적 이슈에 대해서도 충분히 검토한 후 사용하는 것이 바람직해 보임.

## Comments



### Comment 27275

- Author: yangeok
- Created: 2024-07-15T15:45:01+09:00
- Points: 1

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

### Comment 27137

- Author: neo
- Created: 2024-07-11T10:02:44+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=40913736) 
- 기존 기능을 문서화하는 것이 중요함. 아무리 훌륭한 웹 스크래핑 플랫폼이라도 사용자만 이해할 수 있으면 소용없음
  - 예를 들어, `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 덕분에 현재 스크래핑은 금광 시대의 삽을 파는 것과 같음
