Source code for langchain_community.document_loaders.firecrawl

from typing import Iterator, Literal, Optional

from langchain_core.document_loaders import BaseLoader
from langchain_core.documents import Document
from langchain_core.utils import get_from_env


[docs]class FireCrawlLoader(BaseLoader): """使用FireCrawl将网页加载为文档。 必须安装Python包`firecrawl`并拥有FireCrawl API密钥。请参见 https://www.firecrawl.dev/ 了解更多。"""
[docs] def __init__( self, url: str, *, api_key: Optional[str] = None, mode: Literal["crawl", "scrape"] = "crawl", params: Optional[dict] = None, ): """使用API密钥和URL进行初始化。 参数: url: 要爬取的URL。 api_key: Firecrawl API密钥。如果未指定,将从环境变量FIREWALL_API_KEY中读取。获取API密钥 mode: 加载程序运行的模式。默认为“crawl”。 选项包括“scrape”(单个URL)和 “crawl”(所有可访问的子页面)。 params: 传递给Firecrawl API的参数。 示例包括crawlerOptions。 有关更多详细信息,请访问:https://github.com/mendableai/firecrawl-py """ try: from firecrawl import FirecrawlApp except ImportError: raise ImportError( "`firecrawl` package not found, please run `pip install firecrawl-py`" ) if mode not in ("crawl", "scrape"): raise ValueError( f"Unrecognized mode '{mode}'. Expected one of 'crawl', 'scrape'." ) api_key = api_key or get_from_env("api_key", "FIREWALL_API_KEY") self.firecrawl = FirecrawlApp(api_key=api_key) self.url = url self.mode = mode self.params = params
[docs] def lazy_load(self) -> Iterator[Document]: if self.mode == "scrape": firecrawl_docs = [self.firecrawl.scrape_url(self.url, params=self.params)] elif self.mode == "crawl": firecrawl_docs = self.firecrawl.crawl_url(self.url, params=self.params) else: raise ValueError( f"Unrecognized mode '{self.mode}'. Expected one of 'crawl', 'scrape'." ) for doc in firecrawl_docs: yield Document( page_content=doc.get("markdown", ""), metadata=doc.get("metadata", {}), )