1️⃣制作你的第一个 n8n

type
status
date
slug
summary
tags
category
icon
password
author
标签
第三方接入

这篇文章适合谁阅读?

适合对n8n完全没有了解,并且运维技巧几乎为 0 的人阅读。
这篇文章会基于 n8n 内建的节点完成工作工作,不需要配置任何的外部服务 API,主要是为了帮助读者熟悉 n8n 的基础用法,按照这篇文档操作,就可以在 10 分钟之内彻底了解 n8n 的基本使用。
这篇文档不会机械式地教学,而是会穿插很多需求分析,节点找寻的思路,来帮助初学者降低学习门槛,让学习曲线不再陡峭。
在阅读这篇文的之前,你需要先部署 n8n,关于部署 n8n 的方法,详细见下面的三篇文档:
  1. 🚢
    选择适合的 n8n 安装部署方式
  1. 💻
    如何在本机部署/安装 n8n
  1. ☁️
    如何在服务器部署/安装 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 中,可以获取需要登录的页面,但那比较复杂,我们在这里先不做讲解。
 
notion image
请问我们要如何用 n8n 做一个最简单的爬虫,把这 10 个动态爬取下来呢?

详细配置步骤

第一步:如何触发程序运行

所有的程序运行都需要一个条件触发,当你打开一个画布,选择新增第一个节点时,系统会询问你希望通过什么方式来触发这个程序的运行。
notion image
这些选项的含义分别是:
  • 在 n8n 上面点击一下运行按钮,触发程序运行;
  • 外界 API 发来的命令,比如 Telegram 收到一个消息;
  • 每天/每小时固定一个时间执行;
  • 通过 HTTP 请求触发任务;
  • 由另一个 Workflow 触发这个任务;
  • 由聊天框消息触发这个程序运行(AI 对话类节点专用);
  • 文件变更/Email/等等;
因为这是一个示例节点,所以我们只需要选择第一个选项即可。
所以我们的第一个节点如下图所示:
notion image

第二步:如何读取网页的内容?

我们都知道,网页是由 HTML 撰写的,所以在 n8n 的节点里面尝试搜索 html,可以看到如下结果:
notion image
上面的三个选项的含义分别是:
  • 创建一个 html 模板;
  • 转化 html 内容;
  • 把内容填写进入 html 的表格;
显然第二个更符合我们的诉求,可是当我们打开第二个节点,发现它的界面如下图所示:
notion image
怎么回事?并没有可以让我们填写网址的地方?那么我要怎么告诉 n8n 我要读取的网页是哪个呢?
这里需要解释一下,在 n8n 设计中,通过某个协议读取某个类型的内容,需要两个步骤完成,这里需要读者朋友们了解一下网页渲染的背景知识。
在我们日常浏览网页的过程中,浏览器回通过 http 协议,把 html 格式内容从服务器下载到本地,并且渲染成网页。
在系统层面我们能看到一个网页是两个步骤:
  1. 通过 http/https 协议把 html 网页从远程下载下来;
  1. 把 html 网页转化成我们人类能看懂的东西;
其中的 2 是可以对应到我们上方的 Extract HTML Content 的。
所以在使用 Extract HTML Content 之前,我们需要有一个节点,这个节点的作用是通过 http/https 协议把 html 网页从远程下载下来。
我们需要再次在节点里面,用 http 作为关键词进行搜索,就可以搜到如下节点:
notion image
这上面写着用一个 http 请求,去获取返回的数据,这正是我们想要的,所以这就是我们的第二个节点。
notion image
打开第二个节点,发现必填的参数有三个:
  • 方法
  • URL
  • 登录信息
URL 就是我们要爬取的网页,这个很好理解,这个网页不需要登录信息,所以我们选择 None,那么 Method 是个什么东西呢?
不要紧张,这个时候请让我们问一下万能的 ChatGPT:
notion image
所以我们选择 GET 方法即可,于是第二个节点配置完成,让我们点击中间的橙色按钮,Test 一下,完全没有问题。
notion image

第三步:如何将网页有效信息读取出来?

现在我们获得了一堆 html 代码,他们就在 n8n 的页面里面,乱糟糟的,并不能正常被人类阅读,那么应该怎么办呢?
我们可以看刚刚找到的 Extract HTML Content 节点。
notion image
其实最核心的内容就是 Extraction Values 里面的内容,翻译成中文就是要把哪些值转化出来,假如我们想要读取其中的日期和动态文本,应该怎么办呢?
其实也很简单,我们可以看一下 n8n 对于我们填写 Extraction Values 分别有什么要求:
  • Key
  • CSS Selector
  • Return Value
  • Skip Selectors
其中 Key 就是指我们要给这个变量名起什么名字,这个我们自定义就是。
Return Value 指的是返回的值是什么类型,但是里面的选项我根本看不懂,看不懂没关系,我们可以问 ChatGPT:
notion image
notion image
如此一来,我们就可以很清楚地知道在我们的需求下,应该选 Text。
那么 Css Selector 又是什么呢?也还是可以继续询问 ChatGPT。
notion image
所以我们接下来只需要把网页的 html 代码复制给 ChatGPT,并且要求他给出日期和动态内容的 Css Selector 的值就可以了。
问题是我们要如何才能知道该怎么填写正确的 Css Selector 呢?这首先需要我们对 html + css 的语法有最基础的了解。
简单的说,html 控制网页的内容,并且给每个网页打上一个“记号”,而 css 回单独存储一份代码,用来说明每个记号代表了什么样式。比如 H1 标题用宋体,正文用楷体等等。
由于html + css 语法不是这篇教程的重点,所以这里推荐一个视频教学,大家可以学习参考:
成为网页设计师的第一步!快速上手 HTML & CSS 展开你的网页设计之旅!_哔哩哔哩_bilibili
🔹 内容纲要00:00 开场白01:19 建立 HTML 文件结构02:50 HTML 常用标签06:54 如何用 CSS 修改样式09:29 HTML5 语义标签(Semantic Elements)10:28 CSS 盒子模型 (Box Model)14:08 CSS Position 布局16:12 CSS Class 选择器17:42 CSS Flexbox 布局22:38 HTML 表, 视频播放量 107212、弹幕量 120、点赞数 5034、投硬币枚数 3193、收藏人数 8526、转发人数 1605, 视频作者 PAPAYA电脑教室, 作者简介 PAPAYA 电脑教室在 Bilibili 的唯一官方帐号 ~~,相关视频:为初学者准备的:HTML 速成,【web前端期末作业】HTML➕CSS➕JS制作--旅游网站网页设计,自己动手 (教程➕源码),web前端期末作业旅游网站网页设计 自己动手 (教程➕源码)HTML➕CSS➕JS,【完整】120分钟搭建一个网站!!网页设计与制作完全自学教程。新手快速实例教程做网站!(完整版),【期末大作业】HTML5+CSS网页设计—二十四节气网页(附源码)html网页制作,从零开始带你写一个网页(已完结),【前端网页设计案例】HTML+CSS练手项目— —小米官网网页设计(附源码课件)_超详细保姆级教程,零基础小白都能学会,学会即可网上接兼职!_Web前端网页设计,【网页设计与制作9】商品栏-图片img,网页设计与制作,网页制作,网页设计。,为初学者准备的:CSS 速成,HTML+CSS+JS网页期末作业 (动漫网页设计)
成为网页设计师的第一步!快速上手 HTML & CSS 展开你的网页设计之旅!_哔哩哔哩_bilibili
了解了这个特性我们就可以知道,n8n 的 Extract HTML Content 节点之所以使用 CSS Selector 作为读取数据的标记位,是因为通常在设计网页时,不同类型的数据会用不同的样式区隔,但是想同类型的数据,比如 10 条动态内容,那么动态的正文样式一样的。
这个时候我们需要借助 Chrome 浏览器,打开它的开发者模式,选中我们想要读取的元素并且将对应的 html 代码复制出来,如下图所示:
notion image
红色的框就代表是这个内容的 CSS Selector。
有人可能会问,为什么不能直接把整个 html 发给 ChatGPT,让 ChatGPT 来直接告诉我们答案呢?因为代码长度太长了,超过了它能处理的最大长度,导致回答会出现幻觉。所以在和大模型配合的过程中,我们要时刻理解他们的局限性在哪里。
最后,因为我们要输出多条数据,所以每个字段都需要把 Return Array 打开,这意味着输出的将会是一个数组。
一切配置完毕,让我们 Test 一下,结果如下图所示:
notion image
虽然所有的内容被提取出来了,但是这个导出的结果是把 10 条动态都输入到了 1 行数据里面,这个显然不符合我们的预期。
所以我们接下来有一个非常简单的数据处理的诉求,就是把这 1 行数据分成 10 行数据,所幸的的是 n8n 内部内置了大量的数据处理的节点,可以帮助我们快速完成这项工作。
notion image
点击 Data transformation,菜单如下图所示:
notion image
蓝色部分是开启了沉浸式翻译之后的效果,我们的需求是把 1 行数据根据一定的规则分成 10 行数据,所以 Split Out 自然是符合我们的诉求的。
因为上一个步骤中我们把数据输出成了数组,所以这次的拆分会非常简单,只需要把需要拆分的字段拖拽进入文本框即可。
notion image
至于下面的 Include 是什么?不重要,Test step 如果没有问题,就别去管他了。
notion image

第四步:如何将数据导出

现在我们就有了按行区分的数据了,要怎么把他们导出成一个 xlsx 文件呢?
notion image
最挫的方法自然是直接选中复制,但是这会有个问题,如果行数太多不好复制怎么办?
这个时候最好的办法就是遇事不决就搜索有没有相关的节点,让我们以 Excel 文件的后缀名 xlsx 作为关键词在 n8n 中搜索节点。
第一个就是导出成文件。
notion image
选择这个节点,把需要导出的字段拖拽塞入到文本框之后,点击测试,我们就可以获得一个导出了数据的 xlsx 文件。
notion image
最终整个工作流如下图所示:
notion image
示例工作流下载:
notion image
你可以通过在 n8n 中新建一个空白 Workflow,然后点击右上角三个点。
然后选择 Import from File 来导入这个示例工作流。
 
如果你已经可以熟练的从零开始构建这个工作流了,那么不妨开始下一步学习:
广告
熟悉 n8n 的界面制作第一个与大模型配合的 n8n 程序
Loading...
目录