掌握你的第一个魔法
现代魔法编程思想
n8n 使用教程
n8n 实战案例
杂项
1️⃣制作你的第一个 n8n
type
status
date
slug
summary
tags
category
icon
password
author
标签
第三方接入
这篇文章适合谁阅读?
适合对n8n完全没有了解,并且运维技巧几乎为 0 的人阅读。
这篇文章会基于 n8n 内建的节点完成工作工作,不需要配置任何的外部服务 API,主要是为了帮助读者熟悉 n8n 的基础用法,按照这篇文档操作,就可以在 10 分钟之内彻底了解 n8n 的基本使用。
这篇文档不会机械式地教学,而是会穿插很多需求分析,节点找寻的思路,来帮助初学者降低学习门槛,让学习曲线不再陡峭。
在阅读这篇文的之前,你需要先部署 n8n,关于部署 n8n 的方法,详细见下面的三篇文档:
需求描述
当我们打开网页版的即刻(比如:@评论尸),进入某一个用户的主页,可以查看他最新的 10 条动态。
目前即刻 PC Web 端必须登录才能查看消息,因此如果你使用其他用户的主页尝试本教程,需要获取对方的移动端页面,而非 PC 端页面。如果你拿到的地址是
https://web.okjike.com/u/6d3698d6-0970-49a6-a19d-f8d3cfa33a6f
你需要将其修改为 https://m.okjike.com/users/6d3698d6-0970-49a6-a19d-f8d3cfa33a6f
在 n8n 中,可以获取需要登录的页面,但那比较复杂,我们在这里先不做讲解。请问我们要如何用 n8n 做一个最简单的爬虫,把这 10 个动态爬取下来呢?
详细配置步骤
第一步:如何触发程序运行
所有的程序运行都需要一个条件触发,当你打开一个画布,选择新增第一个节点时,系统会询问你希望通过什么方式来触发这个程序的运行。
这些选项的含义分别是:
- 在 n8n 上面点击一下运行按钮,触发程序运行;
- 外界 API 发来的命令,比如 Telegram 收到一个消息;
- 每天/每小时固定一个时间执行;
- 通过 HTTP 请求触发任务;
- 由另一个 Workflow 触发这个任务;
- 由聊天框消息触发这个程序运行(AI 对话类节点专用);
- 文件变更/Email/等等;
因为这是一个示例节点,所以我们只需要选择第一个选项即可。
所以我们的第一个节点如下图所示:
第二步:如何读取网页的内容?
我们都知道,网页是由 HTML 撰写的,所以在 n8n 的节点里面尝试搜索 html,可以看到如下结果:
上面的三个选项的含义分别是:
- 创建一个 html 模板;
- 转化 html 内容;
- 把内容填写进入 html 的表格;
显然第二个更符合我们的诉求,可是当我们打开第二个节点,发现它的界面如下图所示:
怎么回事?并没有可以让我们填写网址的地方?那么我要怎么告诉 n8n 我要读取的网页是哪个呢?
这里需要解释一下,在 n8n 设计中,通过某个协议读取某个类型的内容,需要两个步骤完成,这里需要读者朋友们了解一下网页渲染的背景知识。
在我们日常浏览网页的过程中,浏览器回通过 http 协议,把 html 格式内容从服务器下载到本地,并且渲染成网页。
在系统层面我们能看到一个网页是两个步骤:
- 通过 http/https 协议把 html 网页从远程下载下来;
- 把 html 网页转化成我们人类能看懂的东西;
其中的 2 是可以对应到我们上方的 Extract HTML Content 的。
所以在使用 Extract HTML Content 之前,我们需要有一个节点,这个节点的作用是通过 http/https 协议把 html 网页从远程下载下来。
我们需要再次在节点里面,用 http 作为关键词进行搜索,就可以搜到如下节点:
这上面写着用一个 http 请求,去获取返回的数据,这正是我们想要的,所以这就是我们的第二个节点。
打开第二个节点,发现必填的参数有三个:
- 方法
- URL
- 登录信息
URL 就是我们要爬取的网页,这个很好理解,这个网页不需要登录信息,所以我们选择 None,那么 Method 是个什么东西呢?
不要紧张,这个时候请让我们问一下万能的 ChatGPT:
所以我们选择 GET 方法即可,于是第二个节点配置完成,让我们点击中间的橙色按钮,Test 一下,完全没有问题。
第三步:如何将网页有效信息读取出来?
现在我们获得了一堆 html 代码,他们就在 n8n 的页面里面,乱糟糟的,并不能正常被人类阅读,那么应该怎么办呢?
我们可以看刚刚找到的 Extract HTML Content 节点。
其实最核心的内容就是 Extraction Values 里面的内容,翻译成中文就是要把哪些值转化出来,假如我们想要读取其中的日期和动态文本,应该怎么办呢?
其实也很简单,我们可以看一下 n8n 对于我们填写 Extraction Values 分别有什么要求:
- Key
- CSS Selector
- Return Value
- Skip Selectors
其中 Key 就是指我们要给这个变量名起什么名字,这个我们自定义就是。
Return Value 指的是返回的值是什么类型,但是里面的选项我根本看不懂,看不懂没关系,我们可以问 ChatGPT:
如此一来,我们就可以很清楚地知道在我们的需求下,应该选 Text。
那么 Css Selector 又是什么呢?也还是可以继续询问 ChatGPT。
所以我们接下来只需要把网页的 html 代码复制给 ChatGPT,并且要求他给出日期和动态内容的 Css Selector 的值就可以了。
问题是我们要如何才能知道该怎么填写正确的 Css Selector 呢?这首先需要我们对 html + css 的语法有最基础的了解。
简单的说,html 控制网页的内容,并且给每个网页打上一个“记号”,而 css 回单独存储一份代码,用来说明每个记号代表了什么样式。比如 H1 标题用宋体,正文用楷体等等。
由于html + css 语法不是这篇教程的重点,所以这里推荐一个视频教学,大家可以学习参考:
了解了这个特性我们就可以知道,n8n 的 Extract HTML Content 节点之所以使用 CSS Selector 作为读取数据的标记位,是因为通常在设计网页时,不同类型的数据会用不同的样式区隔,但是想同类型的数据,比如 10 条动态内容,那么动态的正文样式一样的。
这个时候我们需要借助 Chrome 浏览器,打开它的开发者模式,选中我们想要读取的元素并且将对应的 html 代码复制出来,如下图所示:
红色的框就代表是这个内容的 CSS Selector。
有人可能会问,为什么不能直接把整个 html 发给 ChatGPT,让 ChatGPT 来直接告诉我们答案呢?因为代码长度太长了,超过了它能处理的最大长度,导致回答会出现幻觉。所以在和大模型配合的过程中,我们要时刻理解他们的局限性在哪里。
最后,因为我们要输出多条数据,所以每个字段都需要把 Return Array 打开,这意味着输出的将会是一个数组。
一切配置完毕,让我们 Test 一下,结果如下图所示:
虽然所有的内容被提取出来了,但是这个导出的结果是把 10 条动态都输入到了 1 行数据里面,这个显然不符合我们的预期。
所以我们接下来有一个非常简单的数据处理的诉求,就是把这 1 行数据分成 10 行数据,所幸的的是 n8n 内部内置了大量的数据处理的节点,可以帮助我们快速完成这项工作。
点击 Data transformation,菜单如下图所示:
蓝色部分是开启了沉浸式翻译之后的效果,我们的需求是把 1 行数据根据一定的规则分成 10 行数据,所以 Split Out 自然是符合我们的诉求的。
因为上一个步骤中我们把数据输出成了数组,所以这次的拆分会非常简单,只需要把需要拆分的字段拖拽进入文本框即可。
至于下面的 Include 是什么?不重要,Test step 如果没有问题,就别去管他了。
第四步:如何将数据导出
现在我们就有了按行区分的数据了,要怎么把他们导出成一个 xlsx 文件呢?
最挫的方法自然是直接选中复制,但是这会有个问题,如果行数太多不好复制怎么办?
这个时候最好的办法就是遇事不决就搜索有没有相关的节点,让我们以 Excel 文件的后缀名 xlsx 作为关键词在 n8n 中搜索节点。
第一个就是导出成文件。
选择这个节点,把需要导出的字段拖拽塞入到文本框之后,点击测试,我们就可以获得一个导出了数据的 xlsx 文件。
最终整个工作流如下图所示:
示例工作流下载:
如果你已经可以熟练的从零开始构建这个工作流了,那么不妨开始下一步学习:
广告
Loading...
Last update: 2024-07-04
🎉简单易懂的现代魔法 1.0 已经上线🎉
-- 感谢您的支持 ---
👏欢迎体验低代码的魅力👏