このワークフローについて
今日のGitHubトレンドリポジトリをスクレイピングするワークフロー分析
このn8nワークフローテンプレートは、GitHubトレンドページ(https://github.com/trending)から構造化されたデータを自動的にスクレイピングおよび抽出するように設計されており、特にその日のトップリポジトリを対象としています。HTML解析機能を利用して、GitHubの公開HTML構造をナビゲートし、関連するリポジトリ要素を分離し、生のスクレイピングコンテンツを、作成者、名前、説明、直接URLを含むクリーンで利用可能なリポジトリ詳細のリストに変換します。
ワークフローの機能
ワークフローは手動で開始され、GitHubのトレンドページのHTMLコンテンツを取得し、リポジトリリストを保持するメインコンテナを分離し、個々のリポジトリカードを抽出し、主要なメタデータ(リポジトリパス、プログラミング言語、説明など)を解析し、最後に各エントリをauthor、title、url、タイムスタンプ付きのcreated_atなどの拡張フィールドを持つ標準化されたJSONオブジェクトにフォーマットします。出力は、最大25個のトレンドリポジトリ(GitHubに表示される数)のリストであり、データベースへの挿入、通知アラート、または他のツールとの統合などの下流での使用準備ができています。
主な機能と能力
- API不要のWebスクレイピング: 公開HTMLを直接スクレイピングすることで、GitHub APIトークンの必要性を回避します。
- 動的なデータ抽出: CSSセレクタを使用して、GitHubのレイアウトが中程度に進化しても、リポジトリ要素を確実にターゲットにします。
- 構造化された出力: 非構造化HTMLを、正規化されたフィールドを持つ一貫したJSONレコードに変換します。
- 手動トリガー: 「ワークフローをテスト」ボタンによるオンデマンド実行用に設計されており、スケジュールされた実行またはアドホック実行に最適です。
- テキストクリーニング: 可読性と一貫性を向上させるために、空白のトリミングと抽出されたテキストのクリーニングオプションが含まれています。
- URL構築: スクレイピングされたパスから有効なGitHubリポジトリURLを動的に構築します。
主要なノードとその目的
-
「ワークフローをテスト」をクリックしたとき (
manualTrigger)- エントリポイントとして機能し、テスト中または実行中にワークフローを手動でトリガーします。
-
Githubトレンドへのリクエスト (
httpRequest)https://github.com/trendingにHTTP GETリクエストを送信し、トレンドページの生のHTMLを取得します。
-
ボックスの抽出 (
htmlノード)- 完全なHTML応答を解析し、トレンドリポジトリのメインリストを含む最初の
<div class="Box">の内容を抽出します。
- 完全なHTML応答を解析し、トレンドリポジトリのメインリストを含む最初の
-
すべてのリポジトリの抽出 (
htmlノード)- 抽出された「Box」HTMLを処理し、
returnArray: trueを使用して、各<article class="Box-row">要素(個々のリポジトリを表す)をHTMLスニペットの配列として分離します。
- 抽出された「Box」HTMLを処理し、
-
リストに変換 (
splitOutノード)- リポジトリHTMLスニペットの配列を個々のアイテムに分割し、後続のノードでのアイテムごとの処理を可能にします。
-
リポジトリデータの抽出 (
htmlノード)- 各リポジトリHTMLスニペットについて、3つの主要な情報を抽出します。
repository:<a class="Link">要素からの作成者/リポジトリパス。language:<span class="d-inline-block">からのプログラミング言語。description:<p>タグからの簡単なプロジェクト説明。
- 各リポジトリHTMLスニペットについて、3つの主要な情報を抽出します。
-
結果変数の設定 (
setノード)- 抽出されたデータを変換および拡張します。
repositoryをauthorとtitleに分割します。- リポジトリパスを使用して有効な
urlを構築します。 {{$now}}を使用してcreated_atタイムスタンプを追加します。- 元の
descriptionを保持します。 includeOtherFields: "="を介して他のすべてのフィールドを保持します。
- 抽出されたデータを変換および拡張します。
ユースケースとメリット
- 開発者リサーチ: 新しいまたは急上昇中のオープンソースプロジェクトを迅速に発見します。
- 自動監視: 競合分析やインスピレーションのために日々のトレンドを追跡します。
- コンテンツ集約: トレンドリポジトリをダッシュボード、ニュースレター、または内部ツールにフィードします。
- 教育目的: n8nのビジュアルオートメーションを使用してWebスクレイピング技術を学びます。
- 低コスト代替: 公開データに対して、公式GitHub APIのレート制限や認証要件を回避します。
ステップバイステップのワークフローロジック
- トリガー: ユーザーが「ワークフローをテスト」をクリックし、手動トリガーをアクティブにします。
- ページの取得:
httpRequestノードがhttps://github.com/trendingの完全なHTMLを取得します。 - コンテナの分離:
Extract Boxノードがdiv.Boxを使用して、主要なトレンドセクションをキャプチャします。 - リポジトリカードの抽出:
Extract all repositoriesノードがすべてのarticle.Box-row要素を選択し、repositoriesフィールドの下のHTML文字列の配列として返します。 - アイテムへの分割:
Turn to a listノードがrepositories配列を個々のワークフローアイテムに変換し、並列または逐次処理を可能にします。 - メタデータの解析: 各リポジトリアイテムについて、
Extract repository dataノードがCSSセレクタを適用して以下を抽出します。- リポジトリパス(例:「n8n-io/n8n」)
- 言語バッジのテキスト
- 説明段落
- 拡張と標準化:
Set Result Variablesノードが以下を行います。- リポジトリパスを
authorとtitleに分割します。 - クリック可能なGitHub URLを構築します。
- 現在のタイムスタンプを追加します。
- すべてのフィールドをクリーニングし、均一な構造に割り当てます。
- リポジトリパスを
- 出力: 最終的な出力は、エクスポート、保存、またはさらなる自動化の準備ができた構造化されたリポジトリオブジェクトのリストです。
このワークフローは、n8nのネイティブHTML解析およびデータ操作ノードを使用した効率的なノーコードWebスクレイピングの例であり、公開されているGitHubデータから実行可能な洞察を提供します。
使い方:JSON をダウンロードし、n8n で「ファイルからインポート」を選択します。