FirecrawlCrawler

FirecrawlCrawler

Firecrawl을 사용해 웹사이트를 크롤링하고 콘텐츠를 Haystack Document로 반환해요. 단일 페이지를 가져오는 페처와 달리 FirecrawlCrawler는 링크를 따라 하위 페이지를 발견해요.

출처: 문서

본문

FirecrawlCrawler는 Firecrawl을 사용해 하나 이상의 URL을 크롤링하고 추출된 콘텐츠를 Haystack Document 객체로 반환해요. 각 주어진 URL에서 시작해 링크를 따라 구성 가능한 한도까지 하위 페이지를 발견해요. 따라서 단일 페이지가 아니라 전체 웹사이트나 문서 사이트를 수집하는 데 잘 맞아요.

Firecrawl은 LLM 입력으로 잘 작동하는 구조화된 형식으로 콘텐츠를 반환해요. 크롤링된 각 페이지는 별도의 Document가 되고, 페이지 콘텐츠는 content 필드에, title·URL·description 같은 메타데이터는 meta 필드에 담겨요.

Crawl parameters ​

params 인자를 통해 크롤링 동작을 제어할 수 있어요. 자주 쓰는 파라미터:

  • limit: URL당 크롤링할 최대 페이지 수. 기본값은 1. 한도가 없으면 Firecrawl이 모든 하위 페이지를 크롤링해 크레딧을 빠르게 소모할 수 있어요.
  • scrape_options: 출력 형식을 제어해요. 기본값은 {"formats": ["markdown"]}.

사용 가능한 전체 파라미터 목록은 Firecrawl API reference에서 확인하세요.

Authorization ​

FirecrawlCrawler는 기본적으로 FIRECRAWL_API_KEY 환경 변수를 사용해요. 초기화 시점에 키를 명시적으로 전달할 수도 있어요:

from haystack.utils import Secret
from haystack_integrations.components.fetchers.firecrawl import FirecrawlCrawler

crawler = FirecrawlCrawler(api_key=Secret.from_token("<your-api-key>"))

API 키를 얻으려면 firecrawl.dev에서 가입하세요.

Installation ​

pip install firecrawl-haystack
  • 대표적인 파이프라인 위치: 인덱싱 또는 쿼리 파이프라인의 데이터 가져오기 단계
  • 필수 run 변수: urls — 크롤링을 시작할 URL(string) 리스트
  • 출력 변수: documents — Document 리스트
  • API reference: Firecrawl
  • 패키지명: firecrawl-haystack

Usage ​

On its own ​

from haystack_integrations.components.fetchers.firecrawl import FirecrawlCrawler

crawler = FirecrawlCrawler(params={"limit": 3})
result = crawler.run(urls=["https://docs.haystack.deepset.ai/docs/intro"])
documents = result["documents"]
for doc in documents:
    print(f"{doc.meta.get('title')} - {doc.meta.get('url')}")

In a pipeline ​

FirecrawlCrawler로 문서 사이트를 크롤링해 InMemoryDocumentStore에 저장하는 인덱싱 파이프라인 예시예요.

from haystack import Pipeline
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack.components.preprocessors import DocumentSplitter
from haystack.components.writers import DocumentWriter
from haystack_integrations.components.fetchers.firecrawl import FirecrawlCrawler

document_store = InMemoryDocumentStore()
crawler = FirecrawlCrawler(params={"limit": 10})
splitter = DocumentSplitter(split_by="sentence", split_length=5)
writer = DocumentWriter(document_store=document_store)
indexing_pipeline = Pipeline()
indexing_pipeline.add_component("crawler", crawler)
indexing_pipeline.add_component("splitter", splitter)
indexing_pipeline.add_component("writer", writer)
indexing_pipeline.connect("crawler.documents", "splitter.documents")
indexing_pipeline.connect("splitter.documents", "writer.documents")
indexing_pipeline.run(
    data={
        "crawler": {
            "urls": ["https://docs.haystack.deepset.ai/docs/intro"],
        },
    },
)

더 알아보기 (Learn more)

  • Firecrawl API reference를 확인하세요.