> ## Documentation Index
> Fetch the complete documentation index at: https://crewai.burt.pe.kr/llms.txt
> Use this file to discover all available pages before exploring further.

# Spider Scraper

> SpiderTool은 Spider를 사용해 지정된 웹사이트의 콘텐츠를 추출하고 읽도록 설계되었다.

# `SpiderTool`

## 설명

[Spider](https://spider.cloud/?ref=crewai)는 [가장 빠른](https://github.com/spider-rs/spider/blob/main/benches/BENCHMARKS.md#benchmark-results) 오픈 소스 스크래퍼이자 크롤러로, LLM(대형 언어 모델)에 바로 사용할 수 있는 데이터를 제공한다. 이 도구는 어떤 웹사이트든 순수한 HTML, 마크다운, 메타데이터 또는 텍스트로 변환하며, AI를 활용해 커스텀 액션으로 크롤링할 수 있는 기능을 제공한다.

## 설치

`SpiderTool`을 사용하려면 [Spider SDK](https://pypi.org/project/spider-client/)와 `crewai[tools]` SDK를 다운로드해야 한다:

```shell theme={null}
pip install spider-client 'crewai[tools]'
```

## 예제

이 예제는 `SpiderTool`을 사용해 에이전트가 웹사이트를 스크랩하고 크롤링할 수 있도록 설정하는 방법을 보여준다. Spider API에서 반환된 데이터는 이미 LLM에서 바로 사용할 수 있도록 준비되어 있으므로 추가적인 정제 작업이 필요하지 않다.

```python theme={null}
from crewai_tools import SpiderTool

def main():
    spider_tool = SpiderTool()

    searcher = Agent(
        role="웹 리서치 전문가",
        goal="특정 URL에서 관련 정보를 찾는다",
        backstory="웹을 매우 잘 활용하는 전문 웹 리서치 전문가",
        tools=[spider_tool],
        verbose=True,
    )

    return_metadata = Task(
        description="https://spider.cloud를 스크랩하고, 1개의 제한과 메타데이터 활성화",
        expected_output="spider.cloud의 메타데이터와 10단어 요약",
        agent=searcher
    )

    crew = Crew(
        agents=[searcher],
        tasks=[
            return_metadata,
        ],
        verbose=2
    )

    crew.kickoff()

if __name__ == "__main__":
    main()
```

## 인자

| 인자 | 타입 | 설명 |
| :- | :- | :- |
| **api\_key** | `string` | Spider API 키를 지정한다. 지정하지 않으면 환경 변수에서 `SPIDER_API_KEY`를 찾는다. |
| **params** | `object` | 요청에 대한 선택적 매개변수. 기본값은 `{"return_format": "markdown"}`로, LLM에 최적화된 콘텐츠를 반환한다. |
| **request** | `string` | 수행할 요청 타입 (`http`, `chrome`, `smart`). `smart`는 기본적으로 HTTP를 사용하며, 필요한 경우 JavaScript 렌더링으로 전환한다. |
| **limit** | `int` | 웹사이트당 최대 크롤링 페이지 수. `0`으로 설정하거나 생략하면 제한 없이 크롤링한다. |
| **depth** | `int` | 최대 크롤링 깊이. `0`으로 설정하면 제한 없이 크롤링한다. |
| **cache** | `bool` | HTTP 캐싱을 활성화해 반복 실행 속도를 높인다. 기본값은 `true`이다. |
| **budget** | `object` | 크롤링 페이지에 대한 경로 기반 제한을 설정한다. 예를 들어 `{"*":1}`은 루트 페이지만 크롤링한다. |
| **locale** | `string` | 요청에 대한 로케일을 지정한다. 예: `en-US`. |
| **cookies** | `string` | 요청에 사용할 HTTP 쿠키를 지정한다. |
| **stealth** | `bool` | Chrome 요청에 대해 탐지를 피하기 위해 스텔스 모드를 활성화한다. 기본값은 `true`이다. |
| **headers** | `object` | 모든 요청에 대한 HTTP 헤더를 키-값 쌍의 맵으로 지정한다. |
| **metadata** | `bool` | 페이지와 콘텐츠에 대한 메타데이터를 저장해 AI 상호 운용성을 높인다. 기본값은 `false`이다. |
| **viewport** | `object` | Chrome 뷰포트의 크기를 설정한다. 기본값은 `800x600`이다. |
| **encoding** | `string` | 인코딩 타입을 지정한다. 예: `UTF-8`, `SHIFT_JIS`. |
| **subdomains** | `bool` | 크롤링에 서브도메인을 포함시킨다. 기본값은 `false`이다. |
| **user\_agent** | `string` | 커스텀 HTTP 사용자 에이전트를 지정한다. 기본값은 랜덤 에이전트이다. |
| **store\_data** | `bool` | 요청에 대한 데이터 저장을 활성화한다. `storageless`가 설정된 경우 이를 재정의한다. 기본값은 `false`이다. |
| **gpt\_config** | `object` | AI가 크롤링 액션을 생성하도록 허용하며, `"prompt"`에 대한 배열을 통해 선택적 체이닝 단계를 설정할 수 있다. |
| **fingerprint** | `bool` | Chrome에 대한 고급 지문 인식을 활성화한다. |
| **storageless** | `bool` | AI 임베딩을 포함한 모든 데이터 저장을 방지한다. 기본값은 `false`이다. |
| **readability** | `bool` | [Mozilla의 readability](https://github.com/mozilla/readability)를 통해 콘텐츠를 사전 처리해 읽기 쉽게 만든다. LLM에 적합한 콘텐츠를 제공한다. |
| **return\_format** | `string` | 데이터 반환 형식을 지정한다: `markdown`, `raw`, `text`, `html2text`. 기본 페이지 형식을 원한다면 `raw`를 사용한다. |
| **proxy\_enabled** | `bool` | 네트워크 수준의 차단을 피하기 위해 고성능 프록시를 활성화한다. |
| **query\_selector** | `string` | 마크업에서 콘텐츠를 추출하기 위한 CSS 쿼리 선택자를 지정한다. |
| **full\_resources** | `bool` | 웹사이트에 연결된 모든 리소스를 다운로드한다. |
| **request\_timeout** | `int` | 요청에 대한 타임아웃을 초 단위로 설정한다 (5-60). 기본값은 `30`이다. |
| **run\_in\_background** | `bool` | 요청을 백그라운드에서 실행한다. 데이터 저장 및 대시보드 크롤링 트리거에 유용하다. `storageless`가 설정된 경우 효과가 없다. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.