工作流介绍
今日 GitHub Trending 仓库工作流分析
此 n8n 工作流模板旨在自动抓取并提取 GitHub Trending 页面 (https://github.com/trending) 的结构化数据,特别是针对当前日期的热门仓库。它利用 HTML 解析功能来导航 GitHub 的公共 HTML 结构,隔离相关的仓库元素,并将原始抓取内容转换为干净、可用的仓库详细信息列表,包括作者、名称、描述和直接 URL。
工作流功能
工作流手动启动,获取 GitHub trending 页面的 HTML 内容,隔离包含仓库列表的主容器,提取单个仓库卡片,解析关键元数据(如仓库路径、编程语言和描述),最后将每个条目格式化为标准的 JSON 对象,并包含 author、title、url 和带时间戳的 created_at 等增强字段。输出最多包含 25 个 trending 仓库的列表(由 GitHub 显示),可用于下游使用,如数据库插入、通知提醒或与其他工具集成。
主要特性和功能
- 无需 API 的网页抓取: 通过直接抓取公共 HTML,绕过了对 GitHub API 令牌的需求。
- 动态数据提取: 使用 CSS 选择器可靠地定位仓库元素,即使 GitHub 的布局发生适度变化。
- 结构化输出: 将非结构化 HTML 转换为具有标准化字段的一致 JSON 记录。
- 手动触发: 通过“测试工作流”按钮按需执行,非常适合计划性或临时运行。
- 文本清理: 提供修剪空格和清理提取文本的选项,以提高可读性和一致性。
- URL 构建: 从抓取的路径动态构建有效的 GitHub 仓库 URL。
主要节点及其用途
-
点击“测试工作流”时 (
manualTrigger)- 作为入口点;在测试或执行期间手动触发工作流。
-
请求 GitHub Trending (
httpRequest)- 向
https://github.com/trending发送 HTTP GET 请求,以检索 trending 页面的原始 HTML。
- 向
-
提取 Box (
html节点)- 解析完整的 HTML 响应,并提取第一个
<div class="Box">的内容,该内容包含 trending 仓库的主列表。
- 解析完整的 HTML 响应,并提取第一个
-
提取所有仓库 (
html节点)- 处理提取的“Box” HTML,并使用
returnArray: true将每个<article class="Box-row">元素(代表单个仓库)隔离到一个 HTML 片段数组中。
- 处理提取的“Box” HTML,并使用
-
转换为列表 (
splitOut节点)- 将仓库 HTML 片段数组拆分为单独的项目,以便在后续节点中逐项处理。
-
提取仓库数据 (
html节点)- 对于每个仓库 HTML 片段,提取三条关键信息:
repository: 来自<a class="Link">元素的作者/仓库路径。language: 来自<span class="d-inline-block">的编程语言。description: 来自<p>标签的项目简短描述。
- 对于每个仓库 HTML 片段,提取三条关键信息:
-
设置结果变量 (
set节点)- 转换和丰富提取的数据:
- 将
repository分割为author和title。 - 使用仓库路径构建有效的
url。 - 使用
{{$now}}添加created_at时间戳。 - 保留原始
description。 - 通过
includeOtherFields: "="保留所有其他字段。
- 将
- 转换和丰富提取的数据:
用例和优势
- 开发者研究: 快速发现新的或新兴的开源项目。
- 自动化监控: 跟踪每日趋势以进行竞争分析或获取灵感。
- 内容聚合: 将 trending 仓库输入仪表板、新闻通讯或内部工具。
- 教育目的: 使用 n8n 的可视化自动化学习网页抓取技术。
- 低成本替代方案: 避免官方 GitHub API 对公共数据的速率限制或身份验证要求。
分步工作流逻辑
- 触发: 用户点击“测试工作流”,激活手动触发器。
- 获取页面:
httpRequest节点检索https://github.com/trending的完整 HTML。 - 隔离容器:
Extract Box节点使用div.Box捕获主要的 trending 部分。 - 提取仓库卡片:
Extract all repositories节点选择所有article.Box-row元素,并将它们作为 HTML 字符串数组返回到repositories字段下。 - 拆分为项目:
Turn to a list节点将repositories数组转换为单独的工作流项目,以便并行或顺序处理。 - 解析元数据: 对于每个仓库项目,
Extract repository data节点应用 CSS 选择器来提取:- 仓库路径(例如,“n8n-io/n8n”)
- 语言徽章文本
- 描述段落
- 丰富和标准化:
Set Result Variables节点:- 将仓库路径拆分为
author和title - 构建可点击的 GitHub URL
- 添加当前时间戳
- 清理并将所有字段分配到统一的结构中
- 将仓库路径拆分为
- 输出: 最终输出是一个结构化的仓库对象列表,可用于导出、存储或进一步自动化。
此工作流通过 n8n 的原生 HTML 解析和数据操作节点,例证了高效的无代码网页抓取,从而从公开可用的 GitHub 数据中提供可操作的见解。
使用方法:下载 JSON 文件,然后在 n8n 中选择“从文件导入”。