GitHub-Daten über das API-Limit hinaus scrapen: Stars, Abhängige
Das GitHub-API begrenzt nicht authentifizierte Anfragen auf 60 pro Stunde und verbirgt Abhängige und Trends vollständig. So können Sie die wichtigen Signale über günstige IPs extrahieren.
GitHub ist eine Fundgrube für Forschung - Adoptionskurven, Wettbewerbsdynamik, Abhängigkeitsdiagramme, Einstellungssignale - und das offizielle API gibt Ihnen einen Teil davon kostenlos. Dann stoppt es. Nicht authentifizierte Anfragen sind auf 60 pro Stunde begrenzt, und die beiden Datensätze, die die meisten Menschen wollen, das Abhängigkeitsdiagramm und die Trendseite, sind überhaupt nicht im API enthalten. Dieser Leitfaden behandelt, wie Sie GitHub-Daten scrapen können, die diese Grenzen überschreiten: was das API Ihnen gibt, was Sie aus HTML lesen müssen und warum GitHub ein seltener Fall ist, bei dem günstige Rechenzentrums- und IPv6-Proxies das richtige Werkzeug sind.
Kennen Sie die Grenzen, bevor Sie sie bekämpfen
Beginnen Sie mit dem API - es ist strukturiert, anerkannt und günstig im Verbrauch, wenn Sie sich authentifizieren. Die Zahlen, die alles formen: Nicht authentifizierte REST-Anfragen sind auf 60 pro Stunde begrenzt, gezählt pro IP; ein authentifiziertes Token erhält 5.000 pro Stunde; das Such-API ist noch strenger mit 30 Anfragen pro Minute authentifiziert (10 nicht authentifiziert). Das entscheidende Detail ist, dass das nicht authentifizierte Limit pro IP gezählt wird - was genau der Grund ist, warum das Routing von Lesevorgängen über viele IPs Ihren Spielraum vervielfacht.
import requests
# Authenticated API call - watch the rate-limit headers
headers = {"Authorization": "Bearer YOUR_GH_TOKEN",
"Accept": "application/vnd.github+json"}
r = requests.get("https://api.github.com/repos/psf/requests", headers=headers, timeout=15)
repo = r.json()
print(repo["stargazers_count"], repo["forks_count"], repo["open_issues_count"])
print("remaining this hour:", r.headers["X-RateLimit-Remaining"])
Verwenden Sie das API für alles, was es sauber bereitstellt, und verwenden Sie git clone für Dateiinhalte - das Klonen und Verarbeiten eines Repos lokal ist schneller und schonender als das Scrapen einzelner Dateiseiten. HTML-Scraping ist für die Signale, die das API in Nutzlosigkeit begrenzt oder vollständig auslässt.
Was Sie aus HTML lesen müssen
Drei wertvolle Datensätze existieren nur auf den gerenderten Seiten. Das Abhängigkeitsdiagramm - GitHubs "Verwendet von"-Zähler und die Liste der Repositories, die von einem Paket abhängen - ist eine der stärksten Adoptionsmetriken überhaupt und ist nicht im API enthalten. Die Trend-Seiten (github.com/trending, filterbar nach Sprache und Zeitraum) sind nur HTML. Und Themen-Seiten zeigen Repositories nach Thema weitaus nützlicher als es das Suchkontingent erlaubt. Alle drei sind einfache serverseitig gerenderte HTML-Seiten, sodass eine einfache Anfrage-und-Parse funktioniert - kein Browser erforderlich.
import requests
from bs4 import BeautifulSoup
# Scrape the trending page through a datacenter proxy
PROXY = "http://USER:PASS@dc.quantumproxies.io:8000"
def trending(language="python", since="daily"):
url = f"https://github.com/trending/{language}?since={since}"
r = requests.get(url, proxies={"https": PROXY}, timeout=20,
headers={"User-Agent": "Mozilla/5.0"})
soup = BeautifulSoup(r.text, "html.parser")
repos = []
for row in soup.select("article.Box-row"):
name = row.select_one("h2 a")["href"].strip("/")
stars = row.select_one("a[href$='/stargazers']")
repos.append({"repo": name,
"stars": stars.get_text(strip=True) if stars else None})
return repos
print(trending("rust", "weekly")[:5])

GitHub ist ein Ziel für Rechenzentren (und vielleicht IPv6)
Hier ist der Teil, den die Leute übertechnisieren. GitHubs öffentliche Seiten sind serverseitig gerendert, nachsichtig und tragen keine aggressiven JavaScript-Herausforderungen - daher benötigen Sie keine Premium-Residential-IPs, um sie zu lesen. Dies ist ein Lehrbuchbeispiel für Rechenzentrums-Proxies: günstig, schnell und reichlich vorhanden, weit verbreitet, sodass keine einzelne IP das nicht authentifizierte Limit erreicht oder ein sekundäres Ratenlimit auslöst. Auf Residential hier zu setzen, bedeutet Luxuspreise für eine Aufgabe zu zahlen, die eine Economy-IP perfekt erledigt. Unser Leitfaden zu wann Rechenzentrums-Proxies die richtige Wahl sind beschreibt genau diese Art von nachsichtigem, hochdurchsatzfähigem Ziel.
Es gibt eine noch günstigere Option, die es zu testen lohnt: IPv6. Wenn ein Ziel über IPv6 antwortet, bieten IPv6-Proxy-Pools Ihnen einen enormen, kostengünstigen Adressraum - ideal, um pro-IP-begrenzte Lesevorgänge über Tausende von Ausgängen zu verteilen. GitHub hat die Unterstützung für IPv6 eingeführt, daher ist es eines der wenigen großen Ziele, bei denen es sich lohnt, dies zu überprüfen, anstatt es anzunehmen. Testen Sie es, bevor Sie sich festlegen: Führen Sie das Ziel durch unseren kostenlosen IPv6-Kompatibilitätsprüfer und lesen Sie die Wirtschaftlichkeit in unserem vollständigen IPv6-Proxies-Leitfaden.
Holen Sie sich schnelle Rechenzentrums-Proxies für GitHub
Achten Sie auf das sekundäre Ratenlimit
Die stündlichen Limits sind nicht die einzigen Beschränkungen, denen Sie begegnen werden. GitHub betreibt auch Missbrauchserkennung, die auf plötzlichen, stark gleichzeitigen oder verdächtig regelmäßigen Datenverkehr reagiert - selbst wenn Sie bequem unter dem numerischen Limit liegen, kann das Hämmern von einer einzelnen IP eine temporäre Sperre einbringen. Die Abwehrmaßnahmen sind dieselben, die Sie zu einem höflichen Client machen: Begrenzen Sie die Gleichzeitigkeit, fügen Sie ein wenig Jitter zwischen Anfragen hinzu, beachten Sie jeden Retry-After-Header, den der Server Ihnen gibt, und verteilen Sie die Last so, dass kein einzelner Ausgang jemals ein unkontrolliertes Muster trägt. Dies ist der wahre Grund, warum ein breiter Pool wichtig ist - es geht nicht nur um die 60-pro-Stunde-Arithmetik, sondern darum, dass keine einzelne IP jemals wie ein außer Kontrolle geratenes Skript aussehen sollte. Ziehen Sie sich beim ersten 403 oder Verlangsamung zurück, anstatt direkt in ein längeres Verbot zu geraten.
Repo-Daten in Entwickler-Tool-Intelligenz umwandeln
Der Punkt von all dem ist die Analyseebene. Verfolgen Sie die Sternengeschwindigkeit und die Anzahl der Abhängigen einer konkurrierenden Bibliothek im Laufe der Zeit und Sie beobachten die Adoption in Echtzeit. Vergleichen Sie die Trendseiten nach Sprache Woche für Woche, um aufstrebende Tools zu erkennen, bevor sie offensichtlich sind. Ziehen Sie Beitragslisten, um Teamgröße und Einstellungssignale zu lesen. Kombinieren Sie Sprachaufteilungen über ein Thema, um ein ganzes Ökosystem zu kartieren. Erfassen Sie Repositories nach einem Zeitplan, speichern Sie jede Aufnahme mit einem Zeitstempel, und die Deltas werden zum Produkt - Dynamik, nicht eine einzelne Zahl. Eine einmalige Lesung von 40.000 Sternen ist Trivialität; dasselbe Repository, das 2.000 Sterne pro Woche hinzufügt, während seine Abhängigkeitszahl steigt, ist ein echtes Adoptionssignal, auf das Sie reagieren können, bevor der breitere Markt es bemerkt.
import requests
from bs4 import BeautifulSoup
# The 'Used by' dependents count - a top adoption signal, HTML-only
def used_by(owner, repo):
url = f"https://github.com/{owner}/{repo}/network/dependents"
proxy = "http://USER:PASS@dc.quantumproxies.io:8000"
r = requests.get(url, proxies={"https": proxy}, timeout=20,
headers={"User-Agent": "Mozilla/5.0"})
soup = BeautifulSoup(r.text, "html.parser")
tab = soup.select_one("a.btn-link.selected")
return tab.get_text(strip=True) if tab else None
print(used_by("pallets", "flask")) # e.g. '1.4m Repositories'
Eine Gewohnheit hält die Kosten bei großem Volumen im Rahmen: Fordern Sie nur das an, was Sie benötigen. Repo-Seiten sind leichtgewichtig, aber wenn Sie sich auf Tausende von Repositories ausweiten, blockieren Sie Assets und nutzen Sie Verbindungen wieder - unsere Hinweise zum Senkung der Proxy-Bandbreitenkosten gelten auch für ein günstiges Ziel, da der Gewinn sich vervielfacht.

Häufig gestellte Fragen
Was ist das API-Limit von GitHub?
Nicht authentifizierte REST-Anfragen sind auf 60 pro Stunde begrenzt, gezählt pro IP-Adresse. Ein authentifiziertes Token erhöht das auf 5.000 pro Stunde. Das Such-API ist separat und strenger - 30 Anfragen pro Minute authentifiziert, 10 nicht authentifiziert. Da das nicht authentifizierte Limit pro IP gilt, ist das Verbreiten von Lesevorgängen über einen Proxy-Pool eine effektive Möglichkeit, die Sammlung zu skalieren.
Kann ich GitHub-Daten scrapen, die das API nicht bereitstellt?
Ja. Das Abhängigkeitsdiagramm ("Verwendet von"), die Trendseiten, Themenlisten und Sternenverlauf sind nur HTML oder stark kontingentiert über das API. Sie sind einfache serverseitig gerenderte Seiten, sodass ein Anfrage-und-Parse mit BeautifulSoup ohne Browser funktioniert. Routen Sie über Rechenzentrums-Proxies und verteilen Sie die Lesevorgänge, um unter den sekundären Ratenlimits zu bleiben.
Brauche ich Residential-Proxies für GitHub?
Normalerweise nicht. GitHubs öffentliche Seiten sind nachsichtig und serverseitig gerendert, ohne aggressive JavaScript-Herausforderungen, sodass günstige Rechenzentrums-Proxies sie gut handhaben - das Ziel ist es, Anfragen über IPs zu verteilen, nicht sie als Haushalte zu tarnen. Wenn das Ziel über IPv6 antwortet, sind IPv6-Pools noch günstiger. Reservieren Sie Residential-IPs für wirklich feindliche Ziele.
Sollte ich git clone oder Dateiseiten scrapen?
Klonen Sie für Dateiinhalte. Das Ausführen von git clone und das lokale Verarbeiten des Repositories ist schneller, schonender für GitHub und vermeidet per-Datei-Ratenlimits vollständig. Reservieren Sie HTML-Scraping und das API für Metadaten und Signale - Sterne, Abhängige, Trends, Mitwirkende - die Sie nicht aus den ausgecheckten Dateien selbst erhalten können.
GitHub belohnt einen gestuften Ansatz: API, wo es großzügig ist, git clone für Dateien und HTML-Scraping für die Adoptionssignale, die es verbirgt - alles verteilt über günstige IPs, sodass keine einzelne Adresse die 60-pro-Stunde-Grenze erreicht. Testen Sie für IPv6, setzen Sie auf Rechenzentrumspools, und die gesamte Plattform wird zu einem Live-Entwickler-Ökosystem-Datensatz.
Probieren Sie IPv6-Proxies für hochvolumige GitHub-Lesevorgänge aus