Über diesen Workflow
Analyse des Workflows zum Abrufen der heutigen GitHub Trending Repositories
Diese n8n Workflow-Vorlage wurde entwickelt, um automatisch strukturierte Daten von der GitHub Trending-Seite (https://github.com/trending) zu scrapen und zu extrahieren, insbesondere die Top-Repositories, die für den aktuellen Tag hervorgehoben werden. Sie nutzt HTML-Parsing-Fähigkeiten, um die öffentliche HTML-Struktur von GitHub zu durchlaufen, relevante Repository-Elemente zu isolieren und rohe Scraping-Inhalte in eine saubere, nutzbare Liste von Repository-Details umzuwandeln, einschließlich Autor, Name, Beschreibung und direkter URL.
Was der Workflow tut
Der Workflow wird manuell gestartet, ruft den HTML-Inhalt der GitHub Trending-Seite ab, isoliert den Hauptcontainer, der die Repository-Listen enthält, extrahiert einzelne Repository-Karten, parst wichtige Metadaten (wie Repository-Pfad, Programmiersprache und Beschreibung) und formatiert schließlich jeden Eintrag in ein standardisiertes JSON-Objekt mit angereicherten Feldern wie author, title, url und einem zeitgestempelten created_at. Das Ergebnis ist eine Liste von bis zu 25 Trending-Repositories (wie von GitHub angezeigt), bereit für die nachgelagerte Verwendung, wie z. B. Datenbankeinfügung, Benachrichtigungen oder Integration mit anderen Tools.
Hauptfunktionen und Fähigkeiten
- Web Scraping ohne APIs: Umgeht die Notwendigkeit von GitHub API-Tokens durch direktes Scraping von öffentlichem HTML.
- Dynamische Datenerfassung: Verwendet CSS-Selektoren, um Repository-Elemente zuverlässig anzusprechen, auch wenn sich das Layout von GitHub moderat weiterentwickelt.
- Strukturierte Ausgabe: Konvertiert unstrukturierte HTML in konsistente JSON-Datensätze mit normalisierten Feldern.
- Manuelle Auslösung: Konzipiert für die On-Demand-Ausführung über die Schaltfläche "Workflow testen", ideal für geplante oder Ad-hoc-Läufe.
- Textbereinigung: Enthält Optionen zum Entfernen von Leerzeichen und zur Bereinigung extrahierter Texte für bessere Lesbarkeit und Konsistenz.
- URL-Konstruktion: Erstellt dynamisch gültige GitHub-Repository-URLs aus den gescrapten Pfaden.
Hauptknoten und ihre Zwecke
-
Beim Klicken auf „Workflow testen“ (
manualTrigger)- Dient als Einstiegspunkt; löst den Workflow manuell während des Testens oder der Ausführung aus.
-
Anfrage an Github Trend (
httpRequest)- Sendet eine HTTP-GET-Anfrage an
https://github.com/trending, um das rohe HTML der Trending-Seite abzurufen.
- Sendet eine HTTP-GET-Anfrage an
-
Box extrahieren (
htmlnode)- Parst die vollständige HTML-Antwort und extrahiert den Inhalt des ersten
<div class="Box">, der die Hauptliste der Trending-Repositories enthält.
- Parst die vollständige HTML-Antwort und extrahiert den Inhalt des ersten
-
Alle Repositories extrahieren (
htmlnode)- Verarbeitet das extrahierte "Box"-HTML und isoliert jedes
<article class="Box-row">-Element (das einzelne Repositories darstellt) in einem Array von HTML-Snippets mitreturnArray: true.
- Verarbeitet das extrahierte "Box"-HTML und isoliert jedes
-
In eine Liste umwandeln (
splitOutnode)- Teilt das Array von Repository-HTML-Snippets in einzelne Elemente auf, was die Verarbeitung von Element zu Element in nachfolgenden Knoten ermöglicht.
-
Repository-Daten extrahieren (
htmlnode)- Extrahiert für jedes Repository-HTML-Snippet drei wichtige Informationen:
repository: Der Autor/Repo-Pfad aus dem<a class="Link">-Element.language: Programmiersprache aus<span class="d-inline-block">.description: Kurze Projektbeschreibung aus dem<p>-Tag.
- Extrahiert für jedes Repository-HTML-Snippet drei wichtige Informationen:
-
Ergebnisvariablen setzen (
setnode)- Transformiert und reichert die extrahierten Daten an:
- Teilt
repositoryinauthorundtitleauf. - Konstruiert eine gültige
urlunter Verwendung des Repository-Pfads. - Fügt einen
created_at-Zeitstempel mit{{$now}}hinzu. - Behält die ursprüngliche
descriptionbei. - Behält alle anderen Felder über
includeOtherFields: "="bei.
- Teilt
- Transformiert und reichert die extrahierten Daten an:
Anwendungsfälle und Vorteile
- Entwicklerforschung: Schnelles Entdecken neuer oder aufstrebender Open-Source-Projekte.
- Automatisierte Überwachung: Tägliche Trends für Wettbewerbsanalysen oder Inspiration verfolgen.
- Content-Aggregation: Trending-Repos in Dashboards, Newsletter oder interne Tools einspeisen.
- Bildungszwecke: Web-Scraping-Techniken mit der visuellen Automatisierung von n8n erlernen.
- Kostengünstige Alternative: Vermeidet Ratenbegrenzungen oder Authentifizierungsanforderungen der offiziellen GitHub-API für öffentliche Daten.
Schritt-für-Schritt-Workflow-Logik
- Auslöser: Benutzer klickt auf "Workflow testen", um den manuellen Auslöser zu aktivieren.
- Seite abrufen: Der
httpRequest-Knoten ruft das vollständige HTML vonhttps://github.com/trendingab. - Container isolieren: Der
Extract Box-Knoten verwendetdiv.Box, um den primären Trending-Bereich zu erfassen. - Repository-Karten extrahieren: Der
Extract all repositories-Knoten wählt allearticle.Box-row-Elemente aus und gibt sie als Array von HTML-Strings unter dem Feldrepositorieszurück. - In Elemente aufteilen: Der
Turn to a list-Knoten wandelt dasrepositories-Array in einzelne Workflow-Elemente für die parallele oder sequentielle Verarbeitung um. - Metadaten parsen: Für jedes Repository-Element wendet der
Extract repository data-Knoten CSS-Selektoren an, um Folgendes abzurufen:- Repository-Pfad (z. B.
"n8n-io/n8n") - Text des Sprach-Badges
- Beschreibungsparagraph
- Repository-Pfad (z. B.
- Anreichern & Standardisieren: Der
Set Result Variables-Knoten:- Teilt den Repository-Pfad in
authorundtitleauf - Erstellt eine klickbare GitHub-URL
- Fügt den aktuellen Zeitstempel hinzu
- Bereinigt und weist alle Felder einer einheitlichen Struktur zu
- Teilt den Repository-Pfad in
- Ausgabe: Die endgültige Ausgabe ist eine Liste von strukturierten Repository-Objekten, bereit für den Export, die Speicherung oder weitere Automatisierung.
Dieser Workflow ist ein Beispiel für effizientes No-Code-Web-Scraping mit den nativen HTML-Parsing- und Datenmanipulationsknoten von n8n, das umsetzbare Erkenntnisse aus öffentlich verfügbaren GitHub-Daten liefert.
So geht’s: JSON herunterladen und in n8n „Aus Datei importieren“ wählen.