당근알바 크롤러 만들기 - 쉬웠던 구현, 기획의 중요성을 더 느꼈어요.!

한줄 요약

암환자 일자리 매칭 서비스를 위해 당근알바 크롤러를 Claude Code로 만들었습니다. 크롤러 구현은 놀라울 정도로 쉬웠지만, "전국 커버"라는 기획 문제에서 막혀 고민 중입니다.

이런 분들께 도움돼요

  • 크롤러를 처음 만들어보고 싶은 비개발자

  • AI로 자동화를 시도하다가 "기획의 벽"을 만난 분

  • 당근마켓/당근알바 데이터 수집에 관심 있는 분


소개: 시도하고자 했던 것과 그 이유

문제 상황 (Before)

암을 경험한 분들이 일자리를 찾기가 정말 어렵습니다. 체력적 한계로 풀타임이 힘들고, 유연한 근무시간이나 단기 계약이 필요한데, 이런 조건의 일자리를 일일이 찾아다니는 건 현실적으로 불가능해요.

당근알바는 동네 기반 단기 일자리가 많아서 딱 맞는 플랫폼인데, 매일 앱을 열어서 확인하는 건 너무 비효율적이었습니다.

시작하게 된 계기

"암환자 분들이 유연한 일자리를 찾기 어려우니, 당근알바 공고를 자동으로 모아서 전달해주면 어떨까?"

이 생각으로 Fresh Work 프로젝트를 시작했습니다. 첫 번째 자동화 대상으로 당근알바 크롤러를 선택했어요.


진행 방법: 어떤 도구를 사용했고, 어떻게 활용했나요?

사용한 도구

  • 도구명: Claude Code (VSCode 확장)

  • 모델: Claude Opus 4.5

  • 기술 스택: Python, Selenium, BeautifulSoup, SQLite

AI와 협업한 과정

1. 크롤러 기본 구조 만들기

상황: 당근알바 페이지를 크롤링하고 싶은데, 웹 크롤링 경험이 거의 없었어요.

이렇게 요청했어요:

당근알바 페이지(https://www.daangn.com/kr/jobs/)를 크롤링해서 공고 정보를 수집하고 싶어. 이 URL로 접속해서 웹 구조를 분석하고, 크롤러를 만들어줘.

결과: Claude가 알아서 페이지 구조를 분석하고, Selenium으로 동적 로딩을 처리하는 크롤러를 만들어줬어요. 제목, 급여, 근무시간, 위치, 심지어 매너온도까지 18개 필드를 자동 추출하는 코드가 완성됐습니다.

Test 수집 데이터 요약본:

검은 화면에 한국 이름 목록

Test 수집 데이터 상세본:

한국어 텍스트가 포함된 검은 화면의 스크린샷

느낀 점: "이게 이렇게 쉽게 된다고?" 싶었어요. URL만 던져주면 알아서 웹 구조를 파악하고 코드를 짜주니까요.


2. 전국 크롤링 시도 (여기서 문제 발생)

상황: 특정 지역이 아니라 전국의 당근알바를 모두 수집하고 싶었어요.

이렇게 요청했어요:

전국의 모든 당근알바를 크롤링하고 싶어. 지역별로 순회하면서 수집할 수 있게 해줘.

결과:

  • 동(洞) 레벨로 크롤링 → 전국 동 개수가 너무 많아서 시간/비용 폭발

  • 구(區) 레벨로 올림 → 당근은 동 단위로 분류해서 아무것도 안 잡힘

느낀 점: 기술적으로는 가능한데, 현실적으로 불가능한 상황. 이건 코드 문제가 아니라 기획 문제였어요.


인상적이었던 순간

"오!" 했던 순간: 당근알바 URL만 전달했는데, Claude가 알아서 웹 구조를 분석하고 필요한 데이터를 추출하는 코드를 짜준 순간이요. Selenium 설정, 동적 로딩 대기, JSON-LD 파싱까지 다 알아서 해결해줬어요.

막혔던 순간과 해결

문제: 전국 단위 크롤링이 현실적으로 어려움

  • 동 레벨: 시간/비용 과다

  • 구 레벨: 당근 구조상 불가능

현재 상태: 아직 해결 못 함. 특정 지역만 MVP로 시작할지, 다른 접근법을 찾을지 고민 중.


결과와 배운 점

Before vs After

항목

Before

After

공고 수집

수작업 불가능

특정 지역 자동 수집 가능

수집 항목

-

18개 필드 (제목, 급여, 매너온도 등)

전국 커버

목표

미해결 (고민 중)

결과물

  • 당근알바 크롤러: Python 스크립트 (Selenium + SQLite)

  • 수집 데이터: daangn_jobs.db (SQLite 데이터베이스)

  • 수집 필드: 제목, 회사명, 주소, 급여, 근무시간, 매너온도, 뱃지, 지원자 수 등 18개


배운 점과 나만의 꿀팁

효과적이었던 것

  1. URL만 던져주기: "이 페이지 크롤링해줘"라고 URL과 함께 요청하면 Claude가 알아서 구조 분석

  2. 구체적인 출력 형식 요청: "SQLite에 저장해줘", "JSON으로 출력해줘" 등 결과물 형태를 명확히

  3. 단계별 진행: 먼저 목록 수집 → 그다음 상세 페이지 → 마지막에 DB 저장

이렇게 하면 안 돼요 (주의사항)

  1. 처음부터 전국 단위로 설계하지 말 것: 작은 범위로 먼저 검증하고 확장하기

  2. 플랫폼 특성 먼저 파악하기: 당근은 동 단위라는 걸 먼저 알았으면 다르게 접근했을 것


과정 중 시행착오

가장 큰 시행착오는 "전국 크롤링"을 처음부터 목표로 잡은 것이에요.

당근알바는 동네 기반 서비스라서, 동(洞) 단위로 데이터가 분류됩니다. 전국의 모든 동을 순회하려면 시간과 비용이 너무 많이 들고, 구(區) 단위로 올리면 아예 데이터가 안 잡혀요.

배운 점:

  • AI가 코드는 금방 만들어주지만, "어떤 범위로 할지"는 내가 결정해야 함

  • 기술적으로 가능한 것과 서비스로 의미 있는 것은 다름

  • 갈수록 목적과 기획이 중요해질 것 같다


앞으로의 계획

다음 단계

  • 전국 대신 특정 지역(서울 일부)으로 MVP 축소 검토

  • 5분마다 자동 크롤링 스케줄러 구현

  • 새 공고 발생 시 카카오 알림톡 연동

현재 임시 해결책

5분마다 크롤링을 실행하고, 새로운 글이 없으면 바로 종료하는 방식으로 해뒀어요. 하지만 이것도 완벽한 해결책은 아니에요.

도움이 필요한 부분

목표는 당근에 새 공고가 올라오면 최대한 빠르게 환우분들께 전달하는 것이에요.

"얼마나 자주 크롤링할 것인가"가 고민입니다:

  • 너무 자주 → 비효율적 (새 글 없어도 접속)

  • 너무 뜸하게 → 실시간성 떨어짐

더 효율적인 방법(웹훅, RSS, 변경 감지 등)이 있다면 조언 부탁드립니다!


재사용 가능한 프롬프트

프롬프트 1: 웹 크롤러 기본 구조 만들기

[크롤링할 URL]을 크롤링해서 데이터를 수집하고 싶어.
이 URL로 접속해서 웹 구조를 분석하고, 크롤러를 만들어줘.

수집할 정보:
- [항목 1]
- [항목 2]
- [항목 3]

결과는 [SQLite/JSON/CSV] 형식으로 저장해줘.

프롬프트 2: 동적 페이지 처리

이 페이지는 스크롤하면 추가 데이터가 로딩돼.
Selenium으로 동적 로딩을 처리하고,
모든 데이터를 수집할 수 있게 해줘.

도움 받은 글 (옵션)

참고한 자료

  • Selenium 공식 문서

  • Claude Code 사용 가이드

이 글이 도움이 됐다면

비슷한 고민을 하고 계시거나, 전국 단위 크롤링 문제를 해결하신 분이 계시다면 댓글로 조언 부탁드려요!


작성일: 2026-01-23 프로젝트: Fresh Work (암환자 맞춤형 일자리 플랫폼)

2
1개의 답글

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요