处理不同的数据类型#
在本章中,您将学习如何使用 n8n 核心节点处理不同类型的数据。
HTML 和 XML 数据#
您很可能熟悉 HTML 和 XML。
HTML vs. XML
HTML 是一种标记语言,用于描述网页的结构和语义。XML 看起来与 HTML 相似,但标签名称不同,因为它们描述所持有的数据类型。
如果您需要在 n8n 工作流中处理 HTML 或 XML 数据,请使用 HTML 节点 或 XML 节点。
使用 HTML 节点 通过引用 CSS 选择器提取网页的 HTML 内容。如果您想从网站收集结构化信息(网页抓取),这将非常有用。
HTML 练习#
让我们获取最新 n8n 博客文章的标题:
- 使用 HTTP 请求节点 向 URL
https://blog.n8n.io/
发出 GET 请求(此端点不需要身份验证)。 - 连接 HTML 节点 并配置它以提取页面上第一篇博客文章的标题。
- 提示:如果您不熟悉 CSS 选择器或阅读 HTML,CSS 选择器
.post .item-title a
应该能帮助您!
- 提示:如果您不熟悉 CSS 选择器或阅读 HTML,CSS 选择器
Show me the solution
- 使用以下参数配置 HTTP 请求节点:
- 身份验证:无
- 请求方法:GET
- URL:https://blog.n8n.io/ 结果应如下所示:
- 将 HTML 节点 连接到 HTTP 请求节点 并配置前者的参数:
- 操作:提取 HTML 内容
- 源数据:JSON
- JSON 属性:data
- 提取值:
- 键:title
- CSS 选择器:
.post .item-title a
- 返回值:HTML
您可以添加更多值来提取更多数据。
结果应如下所示:
使用 XML 节点 将 XML 转换为 JSON,将 JSON 转换为 XML。如果您与使用 XML 或 JSON 的不同网络服务合作,并需要在它们之间以两种格式获取和提交数据,此操作将非常有用。
XML 练习#
在第 1 章的最后练习中,您使用了 HTTP 请求节点 向 PokéAPI 发出请求。在此练习中,我们将返回到同一个 API,但会将输出转换为 XML:
- 添加一个 HTTP 请求节点,向 PokéAPI
https://pokeapi.co/api/v2/pokemon
发出相同的请求。 - 使用 XML 节点将 JSON 输出转换为 XML。
Show me the solution
- 要从 PokéAPI 获取神奇宝贝,请使用以下参数执行 HTTP 请求节点:
- 身份验证:无
- 请求方法:GET
- URL:https://pokeapi.co/api/v2/pokemon
- 将 XML 节点 连接到它,并使用以下参数:
- 模式:JSON 转 XML
- 属性名称:data
结果应如下所示:
要以相反的方式转换数据,请选择模式 XML 转 JSON。
日期、时间和间隔数据#
日期和时间数据类型包括 DATE
、TIME
、DATETIME
、TIMESTAMP
和 YEAR
。日期和时间可以以不同格式传递,例如:
DATE
:March 29 2022, 29-03-2022, 2022/03/29TIME
:08:30:00, 8:30, 20:30DATETIME
:2022/03/29 08:30:00TIMESTAMP
:1616108400 (Unix 时间戳),1616108400000 (Unix 毫秒时间戳)YEAR
:2022, 22
您可以通过几种方式处理日期和时间:
有时,您可能需要暂停工作流执行。如果您知道某个服务不会立即处理数据,或者返回所有结果很慢,这可能是必要的。在这些情况下,您不希望 n8n 将不完整的数据传递给下一个节点。
如果您遇到这种情况,请在您想要延迟的节点之后使用 等待节点。等待节点 暂停工作流执行,并将在以下情况下恢复执行:
- 在特定时间。
- 在指定的时间间隔后。
- 在 webhook 调用时。
日期练习#
构建一个工作流,在您之前使用的客户数据库节点的输入日期上增加五天。然后,如果计算出的日期在 1959 年之后,工作流在设置计算出的日期作为值之前等待 1 分钟。工作流应该每 30 分钟触发一次。
开始:
- 添加 客户数据库(n8n 培训)节点,选择 获取所有人员 操作。返回全部。
- 添加 日期和时间节点 将数据库中的创建日期向上舍入到月末。将此输出到字段 new-date。包含所有输入字段。
- 添加 If 节点 来检查新的舍入日期是否在
1960-01-01 00:00:00
之后。 - 在该节点的 True 输出中添加 等待节点,并设置它等待一分钟。
- 添加 编辑字段(设置)节点 来设置一个名为 outputValue 的新字段,其为包含 new-date 的字符串。包含所有输入字段。
- 在工作流开始处添加 计划触发器节点,以每 30 分钟触发一次。(您可以保留手动触发器节点用于测试!)
Show me the solution
- 添加 客户数据库(n8n 培训)节点,选择 获取所有人员 操作。
- 选择 返回全部 选项。
- 添加连接到客户数据库节点的 日期和时间节点。选择 舍入日期 选项。
- 添加
created
日期作为要舍入的 日期。 - 选择
Round Up
作为 模式,End of Month
作为 到。 - 将 输出字段名称 设置为
new-date
。 - 在 选项 中,选择 添加选项 并使用控件 包含输入字段
- 添加
- 添加连接到 日期和时间节点 的 If 节点。
- 添加 new-date 字段作为条件的第一部分。
- 将比较设置为 日期和时间 > 在之后
- 添加
1960-01-01 00:00:00
作为表达式的第二部分。(这应该在 True 分支中产生 3 个项目,在 False 分支中产生 2 个项目)
- 在 If 节点 的 True 输出中添加 等待节点。
- 将 恢复 设置为
After Time interval
。 - 将 等待量 设置为
1.00
。 - 将 等待单位 设置为
Minutes
。
- 将 恢复 设置为
- 在 等待节点 中添加 编辑字段(设置)节点。
- 使用 JSON 或手动映射 模式。
- 设置一个名为
outputValue
的新字段,其值为 new-date 字段的值。 - 选择 包含其他输入字段 选项并包含 所有 字段。
- 在工作流开始处添加 计划触发器节点。
- 将 触发间隔 设置为使用
Minutes
。 - 将 触发间的分钟数 设置为 30。
- 要测试您的计划,请确保激活工作流。
- 请务必将此节点连接到您开始时的 客户数据库(n8n 培训)节点!
- 将 触发间隔 设置为使用
工作流应如下所示:
要检查每个节点的配置,您可以复制此工作流的 JSON 代码,并将其粘贴到编辑器 UI 中,或将其保存为文件并从文件导入到新工作流中。有关更多信息,请参阅导出和导入工作流。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 |
|
二进制数据#
到目前为止,您主要处理的是文本数据。但如果您想要处理非文本数据,比如图像或 PDF 文件呢?这些类型的文件在二进制数字系统中表示,因此它们被认为是二进制数据。在这种形式下,二进制数据不能为您提供有用的信息,因此您需要将其转换为可读形式。
在 n8n 中,您可以使用以下节点处理二进制数据:
- HTTP 请求 用于从/向 Web 资源和 API 请求和发送文件。
- 从磁盘读取/写入文件 用于从/向运行 n8n 的机器读取和写入文件。
- 转换为文件 用于获取输入数据并将其输出为文件。
- 从文件中提取 用于从二进制格式获取数据并将其转换为 JSON。
读取和写入文件仅在自托管的 n8n 上可用
在 n8n Cloud 上不可用读取和写入文件到磁盘。您将在安装 n8n 的机器上读取和写入。如果您在 Docker 中运行 n8n,您的命令在 n8n 容器中运行,而不是在 Docker 主机上。从磁盘读取/写入文件节点查找相对于 n8n 安装路径的文件。n8n 建议使用绝对文件路径以防止任何错误。
要读取或写入二进制文件,您需要在节点的 File(s) Selector
参数(用于读取操作)或节点的 File Path and Name
参数(用于写入操作)中写入文件的路径(位置)。
命名正确的路径
文件路径根据您运行 n8n 的方式略有不同:
- npm:
~/my_file.json
- n8n cloud / Docker:
/tmp/my_file.json
二进制练习 1#
对于我们的第一个二进制练习,让我们将 PDF 文件转换为 JSON:
- 发出 HTTP 请求获取此 PDF 文件:
https://media.kaspersky.com/pdf/Kaspersky_Lab_Whitepaper_Anti_blocker.pdf
。 - 使用 从文件中提取节点 将文件从二进制转换为 JSON。
Show me the solution
在 HTTP 请求节点 中,您应该看到 PDF 文件,如下所示:
当您使用 从文件中提取节点 将 PDF 从二进制转换为 JSON 时,结果应如下所示:
要检查节点的配置,您可以复制下面的 JSON 工作流代码并将其粘贴到您的编辑器 UI 中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
|
二进制练习 2#
对于我们的第二个二进制练习,让我们将一些 JSON 数据转换为二进制:
- 向 Poetry DB API
https://poetrydb.org/random/1
发出 HTTP 请求。 - 使用 转换为文件节点 将返回的数据从 JSON 转换为二进制。
- 使用 从磁盘读取/写入文件节点 将新的二进制文件数据写入到运行 n8n 的机器。
- 要检查是否成功,请使用 从磁盘读取/写入文件节点 读取生成的二进制文件。
Show me the solution
此练习的工作流如下所示:
要检查节点的配置,您可以复制下面的 JSON 工作流代码并将其粘贴到您的编辑器 UI 中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
|
🚀 与作者交流

📚 教程 💡 案例 🔧 技巧

⚡ 快答 🎯 定制 🚀 支持