Scraper Hub API

채널 코드 ppomppu · 수집 환경 linux

뽐뿌에서 키워드가 포함된 글을 수집합니다. board_id를 비우면 통합검색(search_bbs.php), 넣으면 해당 게시판 내 검색으로 더 효율적으로 수집합니다(게시판 코드는 글 URL view.php?id=의 값, 예: phone·ppomppu8). 제목·본문·작성자·조회수·게시판·작성시각을 가져오며(본문은 collect_body), 댓글은 collect_comments 시 함께 수집됩니다(각 글 extra.comments[]).

요청 파라미터

아래 값들을 POST /api/v1/collectparams 객체에 담아 보냅니다.

타입필수기본설명
keyword text ppomppu.co.kr 통합검색 키워드
board_id text 특정 게시판만 수집(게시판 내 검색). 글 URL view.php?id= 의 값(예: phone, ppomppu8). 비우면 전체(통합검색)
exclude_board_id text 이 게시판의 글은 결과에서 제외합니다. 쉼표로 여러 개(예: ppomppu, ppomppu4). 글 URL view.php?id= 의 값이며 대소문자는 구분하지 않습니다. 뽐뿌 검색에는 게시판 제외 기능이 없어 수집 결과에서 걸러내며, 제외분은 수집 상한에 세지 않고 다음 글로 채웁니다
limit number 1000 최대 수집 글 수
max_pages number 120 검색 결과 페이지 탐색 한도
start_date date (YYYY-MM-DD) 비우면 제한 없음. 최신순이라 이 날짜 이전 글을 만나면 종료
end_date date (YYYY-MM-DD) 당일 포함. 비우면 오늘까지
collect_body bool true 글 상세를 1회 더 받아 본문·작성자·조회수·정확한 시각 보강
collect_comments bool false 상세의 댓글까지 함께 수집(initialCommentData). 결과는 각 글 extra.comments[]
exclude_keywords text 이 단어가 들어간 글은 수집 단계에서 제외. 쉼표로 여러 개, 한 단어 안 띄어쓰기 허용(예: 무료 나눔, 광고). 기본은 제목 기준(상세 요청 전 제외 → 빠르고 상한 미차감). 본문 수집을 켜면 받아온 본문에서도 한 번 더 제외
수집 기간(start_date ~ end_date)
검색은 최신순이라 위에서부터 훑어 내려갑니다.
  • 둘 다 비우면 → 가장 최신 글부터 limit 개수까지 수집합니다.
  • start_date만 → 그 날짜 이후 글만 (그보다 오래된 글을 만나면 수집 종료).
  • end_date만 → 그 날짜까지(당일 포함). 그보다 최신 글은 건너뜁니다.
  • 둘 다 → 두 날짜 사이 구간만 수집.
제외 키워드(exclude_keywords)
이 단어가 들어간 글은 수집 단계에서 걸러집니다. 쉼표(,)로 여러 개를 넣고, 한 단어 안에 띄어쓰기도 쓸 수 있습니다(예: "무료 나눔, 광고"무료 나눔·광고 두 개). 대소문자는 구분하지 않고 부분 일치로 판정합니다.
  • 기본은 제목 기준 — 상세 요청을 보내기 전에 걸러서 빠르고, 수집 상한(limit)도 차감하지 않습니다.
  • 본문 수집(collect_body: true)을 켜면, 이미 받아온 본문에서도 한 번 더 걸러냅니다(추가 요청 없음).
  • 비우면 → 제외 없이 전부 수집.
댓글 수집(collect_comments: true)
기본은 제목·본문만 HTTP로 빠르게 수집합니다. 댓글까지 받으려면 이 값을 켜세요. 댓글은 JS로 로드되어 글마다 Chrome으로 접속하므로 시간이 더 걸립니다(댓글 0개 글은 건너뜀). 수집된 댓글은 각 글의 extra.comments[] 배열에 담깁니다.

요청 예시

curl -X POST https://scraper.conbus.co.kr/api/v1/collect \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "channel": "ppomppu", "params": { "keyword": "로얄캐닌", "limit": 1000, "max_pages": 120, "start_date": "2026-06-01", "end_date": "2026-06-15", "collect_body": true, "collect_comments": true, "exclude_keywords": "광고, 협찬" } }'

응답 (202 Accepted)

요청은 즉시 큐에 적재되고 request_id 를 돌려줍니다. 실제 수집은 워커가 비동기로 처리합니다.

{ "success": true, "data": { "request_id": 42, "channel": "ppomppu", "status": "pending", "status_url": "https://scraper.conbus.co.kr/api/v1/requests/42" } }

결과 조회 — GET /requests/{id}

같은 API 키로 request_id 를 조회합니다. 상태에 따라 응답이 달라집니다.

진행 중 (pending / running)

아직 끝나지 않았으면 progress 로 진행 상황만 옵니다(items 없음).

{ "success": true, "data": { "request_id": 42, "channel": "ppomppu", "status": "running", "external_ref": null, "result_count": null, "started_at": "2026-06-16T09:00:05+09:00", "finished_at": null, "duration_ms": null, "duration_sec": null, "created_at": "2026-06-16T09:00:00+09:00", "updated_at": "2026-06-16T09:01:30+09:00", "progress": { "count": 12, "phase": "comments" }, "elapsed_ms": 85000 } }

완료 (done) — 댓글 포함

statusdone 이면 data.items[] 에 결과가 담깁니다. 실패 시엔 status: "failed"error 가 옵니다.

{ "success": true, "data": { "request_id": 42, "channel": "ppomppu", "status": "done", "external_ref": null, "result_count": 1, "started_at": "2026-06-16T09:00:05+09:00", "finished_at": "2026-06-16T09:02:00+09:00", "duration_ms": 115000, "duration_sec": 115, "created_at": "2026-06-16T09:00:00+09:00", "updated_at": "2026-06-16T09:02:00+09:00", "items": [ { "post_id": "phone/12345678", "url": "https://www.ppomppu.co.kr/zboard/view.php?id=phone&no=12345678", "title": "갤럭시 S25 자급제 최저가 정보", "author": "폰덕후", "posted_at": "2026-06-10T14:22:00+09:00", "views": 1532, "comment_count": 8, "recommends": null, "body": "쿠팡에서 카드 할인까지 받으면 89만원대네요 ...", "source": "뽐뿌 / 휴대폰포럼", "extra": { "board": "휴대폰포럼", "board_id": "phone", "article_no": "12345678", "source_kind": "search", "comments": [ { "comment_id": "pp_55012", "author": "멍멍이", "text": "정보 감사합니다!", "date": "2026-06-10 15:01:00", "is_reply": false }, { "comment_id": "pp_55013", "author": "냥집사", "text": "도움 되셨다니 다행이에요", "date": "2026-06-10 15:10:00", "is_reply": true } ] } } ] } }

실패 (failed)

statusfailederror 에 사유가 옵니다(items 없음). 일시적 실패는 자동 재시도되며, 위 응답은 마지막 시도 기준입니다.

{ "success": true, "data": { "request_id": 42, "channel": "ppomppu", "status": "failed", "external_ref": null, "result_count": 0, "started_at": "2026-06-16T09:00:05+09:00", "finished_at": "2026-06-16T09:00:16+09:00", "duration_ms": 11000, "duration_sec": 11, "created_at": "2026-06-16T09:00:00+09:00", "updated_at": "2026-06-16T09:00:16+09:00", "error": "수집 실패 — 잠시 후 다시 시도하세요" } }

최상위 data에는 항상 request_id·channel·status·external_ref·result_count·started_at·finished_at·duration_ms·duration_sec·created_at·updated_at이 포함되고, 상태에 따라 items(done)·progress+elapsed_ms(진행 중)·error(failed/cancelled)가 추가됩니다. duration_*는 허브가 잰 수집 소요 시간(시작~종료) — 자세히는 비동기 & 콜백. 요청을 잘못 시작했다면 취소 API로 중단할 수 있습니다.

결과 필드 (items[])

필드설명
post_id글 고유 ID — 게시판코드/글번호. 재수집 중복 제거 키
url원문 주소
title / body제목 / 본문 — collect_body=false면 검색 요약 일부, true면 전체 본문
author작성자 닉네임
posted_at작성 시각 (ISO8601, KST)
views / comment_count조회수 / 댓글 수
recommends미제공 — 항상 null
source뽐뿌 / 게시판명 (게시판명 없으면 코드)
extra.board게시판명
extra.board_id게시판 코드(id=)
extra.article_no글번호
extra.source_kindsearch
extra.comments댓글 배열(아래 표) — collect_comments=true일 때
채널 참고
  • 통합검색(board_id 비움)에서 collect_body=false면 조회수·작성자가 비어 있습니다. 게시판 내 검색은 목록에서 채워집니다.
  • 게시판 지정 두 가지board_id그 게시판만 수집(포함), exclude_board_id그 게시판을 빼고 수집(제외)합니다. 값은 둘 다 글 주소 view.php?id=의 코드이며(예: ppomppu·phone·ppomppu4), exclude_board_id는 쉼표로 여러 개를 넣을 수 있고 대소문자를 구분하지 않습니다.
  • 제외는 수집 결과에서 걸러내는 방식입니다(뽐뿌 검색 자체에는 게시판 제외 기능이 없습니다). 제외된 글은 수집 상한(limit)에 세지 않고 다음 글로 채우므로 요청한 개수를 그대로 받습니다. 다만 제외 비중이 큰 키워드는 같은 개수를 채우기 위해 검색 페이지를 더 넘기므로 시간이 늘어날 수 있고, 몇 건이 걸러졌는지는 관리자 화면의 수집 작업 상세에서 확인할 수 있습니다(API 응답에는 포함되지 않습니다).

댓글 필드 (extra.comments[])

필드설명
comment_id댓글 고유 ID
author작성자
text내용(디시콘만 있으면 대체 텍스트)
date작성 시각
is_reply대댓글 여부(true=답글)

결과 수신(폴링·콜백) 방식은 비동기 & 콜백을 참고하세요.