나는 1년 동안 완전한 Scrapy 핸드북을 만들었습니다. 이유는 이렇습니다.
Source: Dev.to
(번역할 텍스트를 제공해 주시면 한국어로 번역해 드리겠습니다.)
Source: …
얼마 전에 데이터 프로젝트를 진행하고 있었습니다
특별히 복잡한 일은 아니었습니다. 매일 몇 개의 전자상거래 사이트에서 제품 가격을 가져와 스프레드시트에 저장하기만 하면 되었죠. 충분히 간단해 보였나요?
틀렸습니다.
첫 번째 스파이더를 만들고 실행하는 데 예상보다 훨씬 오래 걸렸습니다. 그리고 마침내 작동하게 만들었을 때, 이것이 가장 쉬운 부분에 불과하다는 것을 곧 깨달았습니다. 로그인 이 필요한 사이트를 스크랩하거나, 모든 내용을 JavaScript로 로드하는 사이트를 다루거나, CSV 파일 대신 실제 데이터베이스에 데이터를 저장하는 방법을 찾아야 할 때마다 다시 길을 잃은 느낌이었습니다. 새로운 도전마다 처음부터 다시 시작하는 기분이었습니다.
시간이 지나면서 모든 것을 차근차근 해결했지만, 과정은 느리고 답답했습니다. 쉽게 찾을 수 있었어야 할 답을 찾느라 너무 많은 시간을 허비했죠. 바로 이 부분을 메우고 싶었습니다. 그래서 저는 앉아서 챕터 별로, 처음부터 누군가가 알려줬으면 좋았을 모든 내용을 쓰기 시작했습니다.
Scrapy Handbook이란?
Scrapy Handbook은 45개의 챕터로 구성된 무료 오픈‑소스 가이드로, 웹 스크래핑에 대해 전혀 모르는 사람도 자신감 있게 프로덕션‑레디 스크래퍼를 구축하고 배포할 수 있도록 안내합니다. 무작위 팁 모음이 아니라, 구조화된 끝‑까지의 여정입니다.
- 2025 년 2월에 집필을 시작했으며, 완성까지 약 1년이 걸렸습니다.
- 각 챕터는 여러 차례 수정 과정을 거쳤습니다.
- 코드 예시는 모두 테스트되었습니다.
- 설명은 박사 학위가 없어도 이해할 수 있을 때까지 여러 번 다시 작성했습니다.
전체 내용은 GitHub에 공개되어 있으며, 언제든지 무료로 읽을 수 있습니다.
대상 독자
“웹사이트를 스크랩하고 싶은데 어디서 시작해야 할지 모르겠어요.” 라고 생각한 적이 있다면, 이 핸드북이 바로 당신을 위한 것입니다.
이미 기본을 알고 있지만, 복잡한 상황(JavaScript 사이트, 데이터베이스, 프록시, 배포 등)에서 막히는 경우에도 이 핸드북이 도움이 됩니다.
핸드북은 완전 초보자가 챕터 1부터 따라 할 수 있도록 쓰였으며, 경험이 있는 사람도 후반부 챕터에서 충분히 가치 있는 내용을 찾을 수 있도록 깊이 있게 구성되었습니다.
구성 내용
핸드북은 총 아홉 파트로 나뉘며, 각 파트는 이전 파트를 기반으로 점진적으로 확장됩니다. 아래는 여러분이 따라가게 될 여정입니다.
| 파트 | 초점 |
|---|---|
| Part I | 웹 스크래핑 소개, 환경 설정, 첫 Scrapy 스파이더, CSS 선택자 및 XPath |
| Part II | 데이터 추출, Scrapy Items 및 ItemLoaders, 정제, 파이프라인, 내보내기 |
| Part III | 폼, 로그인 페이지, JavaScript‑렌더링 사이트, 미디어 다운로드, 사이트맵, 오류 처리, 성능 최적화 |
| Part IV | 데이터베이스: SQLite, PostgreSQL, SQLAlchemy ORM, MongoDB 및 파이프라인 연동 |
| Part V | 확장성: Scrapy‑Redis를 이용한 분산 크롤링, 전략, 비용 분석, 자원 최적화, 윤리 |
| Part VI | 배포: VPS 설정, 프로덕션 강화, 모니터링, 로깅, 크론 스케줄링, 실전 팁 |
| Part VII | 내부 구조: 스파이더 미들웨어, 다운로더 미들웨어, 확장 기능, 시그널 시스템 |
| Part VIII | 전문가 수준: 프록시, IP 회전, 안티‑봇 기술, 테스트, 비동기 프로그래밍, 디버깅, 프로파일링, API 구축 |
| Part IX | 큰 그림: 법적·윤리적 고려사항, 웹 스크래핑의 미래, 지속 학습 로드맵 |
간단히 체험해 보기
Scrapy가 실제로 어떻게 동작하는지 보고 싶나요? 시작에 필요한 모든 것은 다음과 같습니다:
pip install scrapy
scrapy startproject myproject
cd myproject
scrapy genspider example example.com
scrapy crawl example
그게 전부—다섯 개의 명령만으로 스파이더가 실행됩니다. 이 핸드북은 바로 이 지점에서 시작해 분산·프로덕션‑급 시스템까지 안내합니다.
솔직히 말하고 싶은 한 가지
웹 스크래핑은 깨지는 분야 중 하나입니다. 여러분이 뭔가를 잘못해서가 아니라, 스크랩 대상 웹사이트가 레이아웃을 바꾸거나 코드를 업데이트하거나, 새로운 방어 메커니즘을 하룻밤 사이에 추가하기 때문이죠. 한때 정상 작동하던 선택자도 금세 무용지물이 될 수 있습니다.
Source:
ectly today might return nothing tomorrow.
나는 이것을 핸드북의 README에 적었고, 그 말은 진심이다. 핸드북에서 더 이상 작동하지 않는 무언가를 찾았다면 좌절하지 마라. 그것은 실패가 아니라 웹 스크래핑의 본질이다. 시간이 지나면서 발전시키는 기술이며, 핸드북은 이를 다루는 도구와 사고방식을 제공한다.
만약 오래된 내용을 발견한다면, GitHub 저장소에 이슈를 열어도 좋다. 혹은 직접 수정하고 풀 리퀘스트를 제출하는 것이 더 좋다. 나는 기여를 우선적으로 검토하고 병합한다.
왜 오픈 소스인가?
이걸 유료 강좌나 아마존 책으로 만들 수도 있었다. 솔직히 그 생각도 해봤다. 하지만 시작할 때 가졌던 그 느낌이 계속 떠올랐다…
Scrapy 핸드북
Scrapy를 배울 수 있는 단일하고 명확한 장소가 없다는 점에 답답함을 느꼈다. 다른 사람이 같은 고통을 겪지 않길 바랐다.
그래서 무료로 제공한다. GitHub에 있다. 누구나 읽고, 기여하고, 혜택을 받을 수 있다.
다음은?
핸드북은 살아있는 문서다. 나는 계속해서 내용을 추가하고, 설명을 다듬으며, Scrapy와 스크래핑 환경이 변화함에 따라 예제를 업데이트하고 있다. 빠진 주제나 더 명확히 설명할 부분이 있다면, 진심으로 의견을 듣고 싶다.
- 읽기: 1장부터 시작한다.
- 기여: GitHub에 이슈나 풀 리퀘스트를 연다.
- 피드백: 생각을 알려줘.
👉 The Scrapy Handbook on GitHub
행복한 스크래핑! 🕷️