跳到主要内容

如何加载 HTML

超文本标记语言或 HTML 是为在 Web 浏览器中显示而设计的文档的标准标记语言。

本文介绍如何将 HTML 文档加载到 LangChain Document 对象中,以便我们可以在下游使用它们。

解析 HTML 文件通常需要专门的工具。在此,我们演示通过 Unstructured 进行解析。转到集成页面以查找与其他服务的集成,例如 FireCrawl

先决条件

本指南假设您熟悉以下概念

安装

yarn add @langchain/community

设置

虽然 Unstructured 提供了开源产品,但您仍然需要提供 API 密钥才能访问该服务。要启动并运行所有内容,请执行以下两个步骤

  1. 下载并启动 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
  1. 获取免费的 API 密钥和 API URL here,并在您的环境中设置它(根据 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'
}
}
]

此页面有帮助吗?


您也可以在 GitHub 上留下详细的反馈 GitHub.