채널 코드 ppomppu · 수집 환경 linux
뽐뿌에서 키워드가 포함된 글을 수집합니다. board_id를 비우면 통합검색(search_bbs.php), 넣으면 해당 게시판 내 검색으로 더 효율적으로 수집합니다(게시판 코드는 글 URL view.php?id=의 값, 예: phone·ppomppu8). 제목·본문·작성자·조회수·게시판·작성시각을 가져오며(본문은 collect_body), 댓글은 collect_comments 시 함께 수집됩니다(각 글 extra.comments[]).
요청 파라미터
아래 값들을 POST /api/v1/collect 의 params 객체에 담아 보냅니다.
| 키 | 타입 | 필수 | 기본 | 설명 |
|---|---|---|---|---|
| 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)을 켜면, 이미 받아온 본문에서도 한 번 더 걸러냅니다(추가 요청 없음). - 비우면 → 제외 없이 전부 수집.
댓글 수집(
기본은 제목·본문만 HTTP로 빠르게 수집합니다. 댓글까지 받으려면 이 값을 켜세요. 댓글은 JS로 로드되어 글마다 Chrome으로 접속하므로 시간이 더 걸립니다(댓글 0개 글은 건너뜀). 수집된 댓글은 각 글의
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) — 댓글 포함
status 가 done 이면 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)
status 가 failed 면 error 에 사유가 옵니다(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_kind | search |
| 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=답글) |
결과 수신(폴링·콜백) 방식은 비동기 & 콜백을 참고하세요.