如何加载 HTML
超文本标记语言或 HTML 是为在 Web 浏览器中显示而设计的文档的标准标记语言。
这涵盖了如何将 HTML
文档加载到 LangChain Document 对象中,我们可以在下游使用这些对象。
解析 HTML 文件通常需要专门的工具。这里我们展示了通过 Unstructured 进行解析。前往集成页面以查找与其他服务的集成,例如 FireCrawl。
安装
- npm
- yarn
- pnpm
npm i @langchain/community @langchain/core
yarn add @langchain/community @langchain/core
pnpm add @langchain/community @langchain/core
设置
虽然 Unstructured 提供了开源版本,但您仍然需要提供 API 密钥才能访问该服务。要开始运行,请执行以下两个步骤
- 下载并启动 Docker 容器
docker run -p 8000:8000 -d --rm --name unstructured-api downloads.unstructured.io/unstructured-io/unstructured-api:latest --port 8000 --host 0.0.0.0
- 获取免费的 API 密钥和 API URL 此处,并在您的环境中设置它(根据 Unstructured 网站,可能需要长达一小时才能分配您的 API 密钥和 URL)。
export UNSTRUCTURED_API_KEY="..."
# Replace with your `Full URL` from the email
export UNSTRUCTURED_API_URL="https://<ORG_NAME>-<SECRET>.api.unstructuredapp.io/general/v0/general"
使用 Unstructured 加载 HTML
import { UnstructuredLoader } from "@langchain/community/document_loaders/fs/unstructured";
const filePath =
"../../../../libs/langchain-community/src/tools/fixtures/wordoftheday.html";
const loader = new UnstructuredLoader(filePath, {
apiKey: process.env.UNSTRUCTURED_API_KEY,
apiUrl: process.env.UNSTRUCTURED_API_URL,
});
const data = await loader.load();
console.log(data.slice(0, 5));
[
Document {
pageContent: 'Word of the Day',
metadata: {
category_depth: 0,
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: ': April 10, 2023',
metadata: {
emphasized_text_contents: [Array],
emphasized_text_tags: [Array],
languages: [Array],
parent_id: 'b845e60d85ff7d10abda4e5f9a37eec8',
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'UncategorizedText'
}
},
Document {
pageContent: 'foible',
metadata: {
category_depth: 1,
languages: [Array],
parent_id: 'b845e60d85ff7d10abda4e5f9a37eec8',
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'play',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'noun',
metadata: {
category_depth: 0,
emphasized_text_contents: [Array],
emphasized_text_tags: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
}
]