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을 효과적으로 사용하려면 다음 단계를 따르세요.
- 의존성 설치: 위 명령으로 필요한 패키지를 설치하세요.
- API 키 설정: Scrapegraph API 키를 환경변수로 설정하거나 초기화 시 제공하세요.
- 도구 초기화: 필요한 파라미터로 도구 인스턴스를 생성하세요.
- 추출 프롬프트 정의: 특정 콘텐츠 추출을 안내하는 자연어 프롬프트를 만드세요.
예시 (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 기반 웹 페이지 구조 이해를 사용해 웹사이트에서 콘텐츠를 추출하는 강력한 방법을 제공합니다. 자연어 프롬프트로 특정 정보를 정확히 표적으로 삼을 수 있게 해서, 웹 스크래핑 태스크를 더 효율적이고 집중적으로 만들어줘요. 웹 페이지에서 특정 정보를 추출해야 하는 데이터 추출, 콘텐츠 모니터링, 리서치 태스크에 특히 유용합니다.