# 웹 스크래핑

> Google Search 결과, 웹 페이지나 사이트의 텍스트, RSS 또는 Atom 피드 항목, TikTok 게시물을 가져와 AI 노드와 목록 노드에 JSON으로 전달하세요.

Source: https://nodaro.ai/ko/docs/nodes/automate/web-scrape

**웹 스크래핑** 노드는 웹에서 콘텐츠를 가져와 항목의 JSON 목록으로 반환합니다. 소스는 네 가지입니다. Google Search 결과, 웹 페이지나 사이트 전체의 텍스트, RSS 또는 Atom 피드의 항목, TikTok 프로필의 최근 게시물입니다. 결과를 [텍스트 생성 - 모든 LLM](https://nodaro.ai/docs/nodes/automate/prompt) 노드에 연결해 요약하거나 다시 쓰게 하거나, [필드 추출](https://nodaro.ai/docs/nodes/automate/extract-field)에 연결해 항목마다 생성을 한 번씩 실행하세요.

- Found in: Automate › Get Content
- Output: data
- API type: `web-scrape`

## 사용 시기
- 키워드의 검색 결과를 콘텐츠 워크플로로 가져옵니다.
- 웹 페이지나 사이트를 Markdown으로 읽고, 텍스트 생성 - 모든 LLM 노드가 요약하거나 사실을 추출하게 합니다.
- 뉴스 사이트, 블로그, YouTube 채널의 최신 항목을 일정에 따라 읽습니다.
- 분석이나 새 아이디어를 위해 TikTok 프로필의 최근 게시물을 모읍니다.

## 빠른 시작
### 노드 추가
캔버스에서 Tab을 누르고 **자동화 › 콘텐츠 가져오기 › 웹 스크래핑**을 선택하세요.

### 소스 선택
설정 패널을 열고 **소스**를 선택한 다음 그 필드를 채우세요. 예를 들어 Google Search에는 **검색어**를 입력합니다. **실행** 버튼에 그 소스의 가격이 표시됩니다.

### 실행
**실행**을 클릭하세요. 첫 항목들이 노드에 나타나고, 설정 패널의 **결과** 탭에 모든 항목이 나열됩니다.

### 항목 사용
**JSON** 출력을 JSON을 텍스트로 읽는 [텍스트 생성 - 모든 LLM](https://nodaro.ai/docs/nodes/automate/prompt) 노드에 연결하거나, 모든 항목에서 필드 하나를 가져오는 [필드 추출](https://nodaro.ai/docs/nodes/automate/extract-field)에 연결하세요. 텍스트 생성 - 모든 LLM 노드에서는 **사용자 프롬프트**를 비워 두고, 작업 내용을 <strong>지시 사항(시스템 프롬프트)</strong>에 쓰세요.

Workflow: 매일 아침 일정 트리거가 워크플로 전체를 실행합니다. 웹 스크래핑이 뉴스 피드를 읽고, 텍스트 생성 - 모든 LLM 노드가 요약을 쓰고, Telegram 게시물이 그 요약을 채널로 보냅니다.

- 웹 스크래핑 → 텍스트 생성 - 모든 LLM (프롬프트)
- 텍스트 생성 - 모든 LLM → Telegram 게시물

## 소스
| 소스 | 반환하는 내용 | 필드 |
| --- | --- | --- |
| **Google Search** | 검색어에 대한 검색 결과 최대 10개 | **검색어**. **최대 결과 수**는 1~10이며 기본값은 5입니다. **국가 코드**는 `us` 같은 2글자 코드로, 결과를 그 지역에 맞춥니다. |
| **웹사이트 콘텐츠(Markdown)** | 한 페이지 또는 사이트의 최대 20페이지 텍스트를 Markdown으로 | **시작 URL**은 브라우저에 입력하는 그대로의 주소입니다. `https://`는 생략할 수 있습니다. **크롤링 모드**는 **단일 페이지**(기본값) 또는 **사이트 크롤링, 최대 20페이지**이며, 사이트 크롤링은 시작 주소부터 사이트의 링크를 따라갑니다. |
| **RSS 피드** | RSS 또는 Atom 피드의 항목 | **피드 URL**에는 `https://`를 붙여도 되고 빼도 됩니다. **결과 수 제한**은 1~50이며 기본값은 10입니다. |
| **TikTok** | 프로필의 최근 게시물 또는 게시물 하나 | **프로필 또는 게시물 URL**에는 `https://`를 붙여도 되고 빼도 됩니다. **결과 수 제한**은 1~20이며 기본값은 10입니다. |

모든 텍스트 필드에는 `{}`를 쓸 수 있습니다. **URL / 검색어** 입력에 노드가 연결되어 있으면 그 노드의 텍스트가 `{}`를 대체합니다. 그러면 [텍스트](https://nodaro.ai/docs/nodes/automate/text)나 [목록](https://nodaro.ai/docs/nodes/automate/list) 노드로 검색어나 주소를 정할 수 있습니다.

## RSS 피드와 Atom 피드
**RSS 피드** 소스는 두 가지 피드 형식을 모두 읽습니다. 이전 버전인 0.9x와 1.0을 포함한 RSS 2.0, 그리고 Atom입니다. YouTube 채널 피드(`https://www.youtube.com/feeds/videos.xml?channel_id=...`), GitHub `releases.atom` 피드, 대부분의 블로그 플랫폼이 게시하는 피드도 여기에 포함됩니다.

피드 형식과 관계없이 모든 항목에는 같은 다섯 필드가 있습니다.

| 필드 | 내용 |
| --- | --- |
| `title` | 항목의 제목 |
| `url` | 항목의 링크. 항목에 링크가 없으면 비어 있습니다. |
| `description` | 항목의 요약이나 내용. HTML이 들어 있을 수 있습니다. |
| `pubDate` | 게시 날짜. 날짜를 읽을 수 있으면 ISO 8601 형식입니다. |
| `guid` | 항목의 고유 ID. ID가 없으면 항목의 링크입니다. |

피드 서버에 일시적인 문제가 있으면 노드는 다시 시도하며, 30초 안에 최대 3번까지 요청합니다. 시간이 다 된 실행은 “RSS fetch timed out” 오류로 실패합니다. 웹 페이지나 오류 페이지처럼 피드가 아닌 것을 반환하는 주소는 실행을 실패시킵니다. 오류에는 그 주소가 무엇을 반환했는지 나옵니다.

## 결과
실행이 끝나면 노드에 처음 몇 개 항목이 표시됩니다. 설정 패널의 **결과** 탭에는 모든 항목이 **목록** 보기와 **원본 JSON** 보기로 나오며, **JSON 복사** 버튼과 **JSON 다운로드** 버튼이 있습니다. 모든 항목은 검색 결과 페이지, 피드 항목, TikTok 동영상 같은 출처로 연결됩니다. 결과를 바탕으로 작업하기 전에 출처에서 확인하세요.

출력 **JSON**은 항목 목록입니다. 흔히 쓰는 방법은 세 가지입니다.

- **요약하거나 다시 쓰기.** [텍스트 생성 - 모든 LLM](https://nodaro.ai/docs/nodes/automate/prompt) 노드의 **프롬프트** 입력에 연결하세요. JSON은 텍스트로 전달됩니다. JSON이 요청이 되도록 **사용자 프롬프트**는 비워 두고, 작업 내용은 <strong>지시 사항(시스템 프롬프트)</strong>에 쓰세요.
- **필드 하나 가져오기.** [필드 추출](https://nodaro.ai/docs/nodes/automate/extract-field)에 연결하세요. 예를 들어 모든 피드 항목의 `title`을 목록으로 가져올 수 있습니다.
- **항목마다 한 번씩 실행.** 추출한 값의 목록을 생성 노드로 보내면, 생성 노드가 값마다 한 번씩 실행됩니다. [목록과 일괄 처리](https://nodaro.ai/docs/concepts/lists-and-batching)를 참고하세요.

## 크레딧
| 소스 | 실행당 크레딧 |
| --- | --- |
| Google Search | 33 |
| 웹사이트 콘텐츠, 단일 페이지 | 11 |
| 웹사이트 콘텐츠, 사이트 크롤링 | 55 |
| RSS 피드 | 11 |
| TikTok | 11 |

노드의 **실행** 버튼, 각 크롤링 모드 옆의 가격, 워크플로 실행의 합계에는 모두 실제로 내는 가격이 표시됩니다.

- **실패한 실행은 전액 환불됩니다.**
- **아무것도 찾지 못한 실행은 청구됩니다.** 실행이 완료되었으므로 그 소스의 가격이 청구되며, 노드는 빈 결과 옆에 마지막 정상 결과를 유지합니다. RSS 피드 소스에서는 항목이 없는 실제 피드도 아무것도 찾지 못한 것으로 봅니다.

## 긴 크롤링
사이트 크롤링은 최대 20페이지를 따라가며, 몇 분이 걸리는 경우가 많습니다. 편집기에서도, 워크플로 실행에서도 따로 할 일은 없습니다. 노드가 기다리고, 크롤링이 끝나면 페이지가 노드에 나타납니다. 크롤링이 백그라운드에서 끝난 뒤 워크플로를 다시 열어도 결과가 그대로 있습니다.

셀프 호스팅 설치에서는 Google Search, 웹사이트 콘텐츠, TikTok 소스에 [공급자 키](https://nodaro.ai/docs/self-hosting/provider-keys)에서 설명하는 웹 스크래핑 키나 [Nodaro Cloud 연결](https://nodaro.ai/docs/self-hosting/cloud-connect)이 필요합니다. RSS 피드 소스에는 둘 다 필요하지 않습니다.

## 팁
- **한 페이지로 시작하세요.** **사이트 크롤링** 비용을 내기 전에 **단일 페이지**로 사이트가 쓸 만한 텍스트를 반환하는지 확인하세요.
- **일정에 따라 확인하세요.** 매일 받는 요약이나 뉴스에 따라 움직이는 워크플로에는 [일정 트리거](https://nodaro.ai/docs/nodes/automate/schedule-trigger)를 추가하세요.
- **필요한 것만 남기세요.** 항목마다 한 번씩 실행되는 노드 앞에서 `title` 같은 필드 하나를 추출하면, 실행마다 짧고 깔끔한 텍스트를 받습니다.

## API에서 사용
`POST /v1/web-scrape`는 코드에서 노드를 실행합니다. 사이트 크롤링은 HTTP 요청 하나의 제한 시간인 약 100초보다 오래 걸릴 수 있으므로, 크롤링에는 `"respondAsync": true`를 보내세요. 그러면 호출이 바로 `jobId`로 응답하고, 완료된 작업의 페이지는 `GET /v1/jobs/:id`로 읽습니다. 이 플래그가 없으면 요청은 스크래핑이 끝날 때까지 열려 있습니다. 요청 제한 시간을 넘긴 크롤링은 응답이 돌아오는 도중에 끊기지만, 작업은 완료되고 청구됩니다. [단일 노드 실행](https://nodaro.ai/docs/developers/api/nodes)과 [작업](https://nodaro.ai/docs/developers/api/jobs)을 참고하세요.

## 자주 묻는 질문

### 웹 스크래핑 노드는 무엇을 가져올 수 있나요?

Google Search 결과, 웹 페이지 한 개 또는 사이트의 최대 20페이지 텍스트를 Markdown으로, RSS 또는 Atom 피드의 항목, TikTok 프로필의 최근 게시물을 가져올 수 있습니다. 모든 소스는 항목의 JSON 목록을 반환합니다.

### 웹 스크래핑은 크레딧이 얼마나 드나요?

소스에 따라 다릅니다. 실행 1회당 Google Search는 33크레딧, 웹 페이지 한 개는 11크레딧, 최대 20페이지의 사이트 크롤링은 55크레딧, RSS 또는 Atom 피드는 11크레딧, TikTok은 11크레딧입니다. 실패한 실행은 전액 환불됩니다.

### 웹 스크래핑으로 웹사이트 전체를 읽을 수 있나요?

네. 웹사이트 콘텐츠(Markdown)를 선택하고 크롤링 모드를 사이트 크롤링으로 설정하세요. 노드는 시작 주소부터 사이트의 링크를 따라 최대 20페이지까지 이동하며, 각 페이지를 Markdown으로 반환합니다.

### 피드나 검색 결과를 매일 확인하려면 어떻게 하나요?

워크플로에 일정 트리거를 추가하고, 매일 9:00처럼 일정을 설정한 다음 일정을 켜세요. 일정에 따른 실행마다 새 결과를 가져오고 웹 스크래핑 다음의 노드들을 실행합니다.

### 스크래핑에서 아무것도 찾지 못하면 어떻게 되나요?

실행은 완료되고 청구되며, 노드는 빈 결과 옆에 마지막 정상 결과를 유지합니다. 피드의 경우 피드가 아닌 것을 반환하는 주소는 실행을 실패시키며, 이때는 크레딧이 환불됩니다.
