유료 프롬프트
CRAWL
스킬
Claude Code 지역 분할 사이트 크롤링 스킬 — "동네별로만 검색된다" (region-sharded-crawling)
이온디
2026.09.29
52
0
평점
0.0
리뷰 0개
사용 방법
본문을 복사해 AI 도구에서 실행하세요
-
STEP 1
아래 본문에서 역할, 목적, 입력값, 출력 형식을 확인합니다.
-
STEP 2
ChatGPT, Claude, Gemini, Codex의 대화창이나 프로젝트 지침에 붙여넣습니다.
-
STEP 3
예시 입력값을 내 업무 정보로 바꾼 뒤 실행하고 결과를 검토합니다.
스킬 파일 제공
구매하시면 SKILL.md(절차·실측), scripts/ 파이썬 스크립트 4종와 설치 안내 README 가 담긴 압축 파일을 받으실 수 있습니다. ~/.claude/skills/ 에 폴더째 두면 자동으로 인식됩니다.

지역 기반 사이트는 검색이 동네 단위로 쪼개져 있습니다. 한 동네씩은 잘 보이는데, 전국을 한 번에 훑을 방법이 없습니다. 동네 목록부터 만들어야 하고, 그걸 모으다 보면 차단(HTTP 429)을 맞기 쉽습니다.
왜 만들었나
당근마켓 매물 검색 도구를 만들며 겪은 것들입니다. 처음엔 "SPA 니까 스텔스 헤드리스 브라우저가 필요하겠다"로 시작했고, 광역 검색 파라미터가 결과를 주길래 되는 줄 알았고, 병렬 8스레드로 몰아치다 차단당했습니다. 전부 실제 응답으로 확인한 뒤 순서와 스크립트로 정리했습니다.
무엇을 하나
- 헤드리스 브라우저가 필요한지 먼저 판별 — curl 로 받아 원하는 데이터가 HTML 에 문자열로 있으면 브라우저는 필요 없습니다. 압축 HTML 에서 한글 grep 이 0을 내도 Python 으로 다시 확인합니다.
- 광역 검색 착각 잡기 — 존재하지 않는 지역값을 대조군으로 함께 던져, 결과가 같으면 광역 검색이 아니라 폴백이라고 판정합니다.
- slug 의 어느 부분이 쓰이는지 확인 — 이름과 ID 중 ID 만 유효하다는 걸 확인하면 ID 순회로 사전을 모을 수 있습니다.
- 인접 지역 목록 역이용 — 페이지가 함께 주는 주변 지역 목록으로 조회 1회에 8개 지역을 얻고, 빈 번호(자기 자신이 이웃 목록에 없음)는 건너뜁니다.
- 동명이인 지역은 이웃 다수결 — 이웃 목록 전체를 행정구역 사전과 대조해 시·군·구를 정합니다.
- ID 블록 지도 먼저 — 성긴 샘플링으로 어느 구간에 어느 지역이 있는지 보고 필요한 구간만 돕니다.
- 429 피하기 — 동시 1개, 무작위 텀, 주기 휴식, 차단 시 즉시 중단, 짧은 본문도 차단으로 의심.
실측
| 항목 | 결과 |
|---|---|
| 병렬 8스레드, 간격 없음 | 357개 수집 시점부터 전부 429 |
| 순차, 텀 2.0~3.2초 무작위, 100건마다 30초 휴식 | 115분간 1,650건, 429 0건 |
| ID 블록 지도(250 간격 33건 샘플링) | 전수 8,200건 → 필요한 구간 2,456건 |
| 광역 파라미터 vs 없는 동네값 | 매물 45건으로 완전히 동일 — 광역 검색 없음 |
| 동명이인 | "중앙동" 전국 31곳, 읍면동 3,121종 중 238개가 동명이인 |
| 이웃 다수결 예 | 논현1동: 서울 강남구 7표 vs 인천 남동구 2표 |
| 매물 링크 패턴 필터 | 안 거르면 135건 중 81건이 추천 키워드 링크(가짜) |
헤드리스 브라우저를 썼다면 동네당 0.3초로 끝날 일이 1~3초로 늘어났을 겁니다. 이 사이트는 React 기반인데도 서버에서 완전한 HTML 을 내려줬습니다.
구성
| 파일 | 역할 |
|---|---|
region-sharded-crawling/SKILL.md | 판별·대조군·다수결·블록 지도·429 규칙·파싱 요령과 체크리스트 |
region-sharded-crawling/scripts/probe_blocks.py | 성긴 간격 샘플링으로 ID 블록 지도 출력 |
region-sharded-crawling/scripts/scan_regions.py | 미확보 구간 우선 스캔, 이웃 ID 큐, 무작위 텀·휴식, 재개 가능한 상태 저장 |
region-sharded-crawling/scripts/merge_states.py | 구간별로 나눠 돌린 상태 파일 병합 |
region-sharded-crawling/scripts/build_regions.py | 이웃 다수결로 동명이인 해소 → 앱에 내장할 지역 사전(JSON) |
region-sharded-crawling/README.md | 설치, 스크립트 실행 예 |
설치
구매 후 전체 프롬프트 확인 가능
유료 프롬프트의 전문과 복사용 프롬프트는 구매자에게만 제공됩니다. 공개 본문에서는 구성, 활용 범위, 업데이트 내역만 확인할 수 있습니다.
스크립트의 URL·ID 구간은 사례(당근) 기준입니다. 다른 사이트에 쓸 땐 파일 위쪽 상수를 바꿉니다.
요구 사항
- Claude Code
- python3(표준 라이브러리만), curl
- 공개 사이트라도 이용약관·robots.txt 확인은 사용자 몫입니다. 스킬은 IP 우회를 권하지 않습니다
이런 분께
- 동네·지점 단위로만 검색되는 사이트에서 전체 목록이 필요한 분
- 크롤러를 병렬로 돌리다 429 차단을 맞아 본 분
- 지역 이름이 겹쳐(중앙동 등) 행정구역을 붙이는 데 막힌 분
리뷰
별점과 함께 남기는 사용 후기
아직 리뷰가 없습니다
리뷰를 작성하려면 로그인하세요.
첫 리뷰를 남겨보세요.