> ## Documentation Index
> Fetch the complete documentation index at: https://docs.firecrawl.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# LlamaIndex

> Firecrawl 可与 LlamaIndex 集成为文档读取器。

<div id="installation">
  ## 安装
</div>

```bash theme={null}
pip install firecrawl-py llama-index llama-index-readers-web
```

<div id="usage">
  ## 使用方式
</div>

`FireCrawlWebReader` 支持三种模式：用于单个页面的 `scrape`、用于整个网站的 `crawl`，以及用于提取结构化数据的 `extract`。

<div id="using-firecrawl-to-gather-an-entire-website">
  ### 使用 Firecrawl 抓取整个网站
</div>

```python theme={null}
from llama_index.readers.web import FireCrawlWebReader
from llama_index.core import SummaryIndex
import os


# 初始化 FireCrawlWebReader 以爬取网站
firecrawl_reader = FireCrawlWebReader(
    api_key="<your_api_key>",  # 将其替换为你在 https://www.firecrawl.dev/ 获取的实际 API 密钥
    mode="crawl",  # "scrape"、"crawl" 或 "extract"
    params={"additional": "parameters"}  # 可选的附加参数
)

# 设置环境变量以配置虚拟密钥
os.environ["OPENAI_API_KEY"] = "<OPENAI_API_KEY>"

# 从单个页面 URL 加载文档
documents = firecrawl_reader.load_data(url="http://paulgraham.com/")
index = SummaryIndex.from_documents(documents)

# 将日志级别设置为 DEBUG 以获得更详细的输出
query_engine = index.as_query_engine()
response = query_engine.query("What did the author do growing up?")
display(Markdown(f"<b>{response}</b>"))
```

<div id="using-firecrawl-to-gather-a-single-page">
  ### 使用 Firecrawl 采集单个页面
</div>

```python theme={null}
from llama_index.readers.web import FireCrawlWebReader

# 使用你的 API 密钥和所需模式初始化 FireCrawlWebReader
firecrawl_reader = FireCrawlWebReader(
    api_key="<your_api_key>",  # 将其替换为你在 https://www.firecrawl.dev/ 获取的实际 API 密钥
    mode="scrape",  # "scrape"、"crawl" 或 "extract"
    params={"additional": "parameters"}  # 可选的附加参数
)

# 从指定的 URL 加载文档
documents = firecrawl_reader.load_data(url="http://paulgraham.com/worked.html")
index = SummaryIndex.from_documents(documents)

# 将日志级别设置为 DEBUG 以获得更详细的输出
query_engine = index.as_query_engine()
response = query_engine.query("What did the author do growing up?")
display(Markdown(f"<b>{response}</b>"))
```
