Scrapegraph Scrape 도구

Scrapegraph Scrape 도구 (ScrapegraphScrapeTool)

CrewAI의 ScrapegraphScrapeTool은 Scrapegraph AI의 SmartScraper API를 활용해 웹사이트에서 지능적으로 콘텐츠를 추출하는 도구예요. AI 기반 콘텐츠 추출로 고급 웹 스크래핑 기능을 제공하며, 타겟 데이터 수집과 콘텐츠 분석 태스크에 적합합니다. 전통적인 스크래퍼와 달리 웹 페이지의 맥락과 구조를 이해해 자연어 프롬프트를 기반으로 가장 관련성 높은 정보를 추출할 수 있어요.

출처: 문서

본문

ScrapegraphScrapeTool은 Scrapegraph AI의 SmartScraper API를 활용해 웹사이트에서 지능적으로 콘텐츠를 추출하도록 설계되었습니다. 이 도구는 AI 기반 콘텐츠 추출로 고급 웹 스크래핑 기능을 제공하며, 타겟 데이터 수집과 콘텐츠 분석 태스크에 이상적이에요. 전통적인 웹 스크래퍼와 달리 웹 페이지의 맥락과 구조를 이해해 자연어 프롬프트를 기반으로 가장 관련성 높은 정보를 추출할 수 있습니다.

설치 (Installation)

이 도구를 사용하려면 Scrapegraph Python 클라이언트를 설치해야 합니다.

uv add scrapegraph-py

Scrapegraph API 키를 환경변수로 설정해야 합니다.

export SCRAPEGRAPH_API_KEY="your_api_key"

API 키는 Scrapegraph AI에서 얻을 수 있어요.

시작하는 방법 (Steps to Get Started)

ScrapegraphScrapeTool을 효과적으로 사용하려면 다음 단계를 따르세요.

  1. 의존성 설치: 위 명령으로 필요한 패키지를 설치하세요.
  2. API 키 설정: Scrapegraph API 키를 환경변수로 설정하거나 초기화 시 제공하세요.
  3. 도구 초기화: 필요한 파라미터로 도구 인스턴스를 생성하세요.
  4. 추출 프롬프트 정의: 특정 콘텐츠 추출을 안내하는 자연어 프롬프트를 만드세요.

예시 (Example)

다음 예시는 ScrapegraphScrapeTool을 사용해 웹사이트에서 콘텐츠를 추출하는 방법을 보여줍니다.

from crewai import Agent, Task, Crew
from crewai_tools import ScrapegraphScrapeTool

# 도구 초기화
scrape_tool = ScrapegraphScrapeTool(api_key="your_api_key")

# 이 도구를 사용하는 에이전트 정의
web_scraper_agent = Agent(
    role="Web Scraper",
    goal="Extract specific information from websites",
    backstory="An expert in web scraping who can extract targeted content from web pages.",
    tools=[scrape_tool],
    verbose=True,
)

# 이커머스 사이트에서 상품 정보를 추출하는 예시 태스크
scrape_task = Task(
    description="Extract product names, prices, and descriptions from the featured products section of example.com.",
    expected_output="A structured list of product information including names, prices, and descriptions.",
    agent=web_scraper_agent,
)

# 크루 생성 및 실행
crew = Crew(agents=[web_scraper_agent], tasks=[scrape_task])
result = crew.kickoff()

미리 정의된 파라미터로 도구를 초기화할 수도 있습니다.

# 미리 정의된 파라미터로 도구 초기화
scrape_tool = ScrapegraphScrapeTool(
    website_url="https://www.example.com",
    user_prompt="Extract all product prices and descriptions",
    api_key="your_api_key"
)

파라미터 (Parameters)

ScrapegraphScrapeTool은 초기화 시 다음 파라미터를 받습니다.

  • api_key: 선택. 사용자의 Scrapegraph API 키. 제공하지 않으면 SCRAPEGRAPH_API_KEY 환경변수를 찾습니다.
  • website_url: 선택. 스크래핑할 웹사이트의 URL. 초기화 시 제공하면 에이전트가 도구를 사용할 때 지정할 필요가 없습니다.
  • user_prompt: 선택. 콘텐츠 추출을 위한 커스텀 지침. 초기화 시 제공하면 에이전트가 도구를 사용할 때 지정할 필요가 없습니다.
  • enable_logging: 선택. Scrapegraph 클라이언트의 로깅 활성화 여부. 기본값은 False.

사용법 (Usage)

ScrapegraphScrapeTool을 에이전트와 함께 사용할 때, 에이전트는 다음 파라미터를 제공해야 합니다 (초기화 시 지정하지 않은 경우).

  • website_url: 스크래핑할 웹사이트의 URL.
  • user_prompt: 선택. 콘텐츠 추출을 위한 커스텀 지침. 기본값은 "Extract the main content of the webpage".

도구는 제공된 프롬프트를 기반으로 추출된 콘텐츠를 반환합니다.

# 에이전트와 도구를 사용하는 예시
web_scraper_agent = Agent(
    role="Web Scraper",
    goal="Extract specific information from websites",
    backstory="An expert in web scraping who can extract targeted content from web pages.",
    tools=[scrape_tool],
    verbose=True,
)

# 특정 콘텐츠를 추출하는 태스크 생성
extract_task = Task(
    description="Extract the main heading and summary from example.com",
    expected_output="The main heading and summary from the website",
    agent=web_scraper_agent,
)

# 태스크 실행
crew = Crew(agents=[web_scraper_agent], tasks=[extract_task])
result = crew.kickoff()

에러 처리 (Error Handling)

ScrapegraphScrapeTool은 다음 예외를 발생시킬 수 있습니다.

  • ValueError: API 키가 없거나 URL 형식이 잘못된 경우.
  • RateLimitError: API 속도 제한을 초과한 경우.
  • RuntimeError: 스크래핑 작업이 실패한 경우 (네트워크 문제, API 오류).

에이전트가 잠재적 오류를 우아하게 처리하도록 지시하는 것을 권장합니다.

# 에러 처리 지침을 포함한 태스크 생성
robust_extract_task = Task(
    description="""
    Extract the main heading from example.com.
    Be aware that you might encounter errors such as:
    - Invalid URL format
    - Missing API key
    - Rate limit exceeded
    - Network or API errors

    If you encounter any errors, provide a clear explanation of what went wrong
    and suggest possible solutions.
    """,
    expected_output="Either the extracted heading or a clear error explanation",
    agent=web_scraper_agent,
)

속도 제한 (Rate Limiting)

Scrapegraph API는 구독 요금제에 따라 달라지는 속도 제한이 있습니다. 다음 모범 사례를 고려하세요.

  • 여러 URL을 처리할 때 요청 간에 적절한 지연을 구현하세요.
  • 애플리케이션에서 속도 제한 오류를 우아하게 처리하세요.
  • Scrapegraph 대시보드에서 API 요금제 한도를 확인하세요.

구현 세부 사항 (Implementation Details)

ScrapegraphScrapeTool은 Scrapegraph Python 클라이언트를 사용해 SmartScraper API와 상호작용합니다.

class ScrapegraphScrapeTool(BaseTool):
    """
    A tool that uses Scrapegraph AI to intelligently scrape website content.
    """

    # Implementation details...

    def _run(self, **kwargs: Any) -> Any:
        website_url = kwargs.get("website_url", self.website_url)
        user_prompt = (
            kwargs.get("user_prompt", self.user_prompt)
            or "Extract the main content of the webpage"
        )

        if not website_url:
            raise ValueError("website_url is required")

        # Validate URL format
        self._validate_url(website_url)

        try:
            # Make the SmartScraper request
            response = self._client.smartscraper(
                website_url=website_url,
                user_prompt=user_prompt,
            )

            return response
        # Error handling...

결론 (Conclusion)

ScrapegraphScrapeTool은 AI 기반 웹 페이지 구조 이해를 사용해 웹사이트에서 콘텐츠를 추출하는 강력한 방법을 제공합니다. 자연어 프롬프트로 특정 정보를 정확히 표적으로 삼을 수 있게 해서, 웹 스크래핑 태스크를 더 효율적이고 집중적으로 만들어줘요. 웹 페이지에서 특정 정보를 추출해야 하는 데이터 추출, 콘텐츠 모니터링, 리서치 태스크에 특히 유용합니다.

더 알아보기 (Learn more)