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를 확인하세요.