Skip to main content

如何加载 HTML

超文本标记语言 HTML 是用于设计在网页浏览器中显示的文档的标准标记语言。

本内容介绍如何将 HTML 文档加载到 LangChain 的 Document 对象中,以便我们可以在后续流程中使用这些对象。

解析 HTML 文件通常需要专用工具。这里我们通过 Unstructured 展示解析过程。有关与其他服务(如 FireCrawl)的集成,请查看集成页面。

预备知识

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

安装

yarn add @langchain/community @langchain/core

配置

尽管 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,并在您的环境中设置(根据 Unstructured 网站说明,分配您的 API 密钥和 URL 可能需要一个小时):
export UNSTRUCTURED_API_KEY="..."
# 将下方替换为您邮件中的 `Full URL`
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'
}
}
]

Was this page helpful?


You can also leave detailed feedback on GitHub.