首页 / n8n 工作流模板 / 每日抓取 GitHub 热门趋势仓库

每日抓取 GitHub 热门趋势仓库

Scrape Today's Github Trend 13 Top Repositories

自动抓取并处理 GitHub 趋势页面的热门仓库,提取作者、标题、描述和 URL 等关键详情。

手动触发7 个节点开发者工具github抓取器开发者

工作流介绍

今日 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。

主要节点及其用途

  1. 点击“测试工作流”时 (manualTrigger)

    • 作为入口点;在测试或执行期间手动触发工作流。
  2. 请求 GitHub Trending (httpRequest)

    • 向 https://github.com/trending 发送 HTTP GET 请求,以检索 trending 页面的原始 HTML。
  3. 提取 Box (html 节点)

    • 解析完整的 HTML 响应,并提取第一个 <div class="Box"> 的内容,该内容包含 trending 仓库的主列表。
  4. 提取所有仓库 (html 节点)

    • 处理提取的“Box” HTML,并使用 returnArray: true 将每个 <article class="Box-row"> 元素(代表单个仓库)隔离到一个 HTML 片段数组中。
  5. 转换为列表 (splitOut 节点)

    • 将仓库 HTML 片段数组拆分为单独的项目,以便在后续节点中逐项处理。
  6. 提取仓库数据 (html 节点)

    • 对于每个仓库 HTML 片段,提取三条关键信息:
      • repository: 来自 <a class="Link"> 元素的作者/仓库路径。
      • language: 来自 <span class="d-inline-block"> 的编程语言。
      • description: 来自 <p> 标签的项目简短描述。
  7. 设置结果变量 (set 节点)

    • 转换和丰富提取的数据:
      • 将 repository 分割为 author 和 title。
      • 使用仓库路径构建有效的 url。
      • 使用 {{$now}} 添加 created_at 时间戳。
      • 保留原始 description。
      • 通过 includeOtherFields: "=" 保留所有其他字段。

用例和优势

  • 开发者研究: 快速发现新的或新兴的开源项目。
  • 自动化监控: 跟踪每日趋势以进行竞争分析或获取灵感。
  • 内容聚合: 将 trending 仓库输入仪表板、新闻通讯或内部工具。
  • 教育目的: 使用 n8n 的可视化自动化学习网页抓取技术。
  • 低成本替代方案: 避免官方 GitHub API 对公共数据的速率限制或身份验证要求。

分步工作流逻辑

  1. 触发: 用户点击“测试工作流”,激活手动触发器。
  2. 获取页面: httpRequest 节点检索 https://github.com/trending 的完整 HTML。
  3. 隔离容器: Extract Box 节点使用 div.Box 捕获主要的 trending 部分。
  4. 提取仓库卡片: Extract all repositories 节点选择所有 article.Box-row 元素,并将它们作为 HTML 字符串数组返回到 repositories 字段下。
  5. 拆分为项目: Turn to a list 节点将 repositories 数组转换为单独的工作流项目,以便并行或顺序处理。
  6. 解析元数据: 对于每个仓库项目,Extract repository data 节点应用 CSS 选择器来提取:
    • 仓库路径(例如,“n8n-io/n8n”)
    • 语言徽章文本
    • 描述段落
  7. 丰富和标准化: Set Result Variables 节点:
    • 将仓库路径拆分为 author 和 title
    • 构建可点击的 GitHub URL
    • 添加当前时间戳
    • 清理并将所有字段分配到统一的结构中
  8. 输出: 最终输出是一个结构化的仓库对象列表,可用于导出、存储或进一步自动化。

此工作流通过 n8n 的原生 HTML 解析和数据操作节点,例证了高效的无代码网页抓取,从而从公开可用的 GitHub 数据中提供可操作的见解。

使用方法:下载 JSON 文件,然后在 n8n 中选择“从文件导入”。