GitHub SERP
Parsen Sie eine GitHub-Repository-Suchergebnisseite in ein strukturiertes Array von Repositorys mit Stars, Sprache, Topics und Paginierungsinfos.
API-Nutzung
Fügen Sie &scraper=github-serp zu einem Crawling API-Request hinzu. URL-kodieren Sie die Ziel-URL im url-Parameter. Ein Request liefert eine Seite; folgen Sie pagination.next_page_url, um weiterzublättern, bis zum 1000-Ergebnis-Limit von GitHub.
curl 'https://api.crawlbase.com/?token=YOUR_TOKEN' \
--data-urlencode 'url=https://github.com/search?q=web+scraping&type=repositories' \
--data-urlencode 'scraper=github-serp' -Gfrom crawlbase import CrawlingAPI
api = CrawlingAPI({'token': 'YOUR_TOKEN'})
res = api.get(
'https://github.com/search?q=web+scraping&type=repositories',
{'scraper': 'github-serp'}
)
import json
data = json.loads(res['body'])const { CrawlingAPI } = require('crawlbase');
const api = new CrawlingAPI({ token: 'YOUR_TOKEN' });
const res = await api.get(
'https://github.com/search?q=web+scraping&type=repositories',
{ scraper: 'github-serp' }
);
const data = JSON.parse(res.body);require 'crawlbase'
api = Crawlbase::API.new(token: 'YOUR_TOKEN')
res = api.get('https://github.com/search?q=web+scraping&type=repositories', scraper: 'github-serp')
data = JSON.parse(res.body)Beispiel-Eingabe-URL
Die im url-Parameter übergebene URL (zur besseren Lesbarkeit URL-dekodiert):
https://github.com/search?q=web+scraping&type=repositoriesResponse-Struktur
JSON-Response-Body. Feldtypen können null sein, wenn die Quellseite den Wert nicht enthält.
Suchanfrage, die diese Ergebnisse erzeugt hat.
Suchtyp, z. B.
repositories.Sortierfeld, z. B.
stars. Fehlt, wenn nach bester Übereinstimmung sortiert wird.Sortierrichtung,
desc oder asc.Angegebene Gesamtzahl der Ergebnisse über alle Seiten.
Aktuelle Seitennummer.
Paginierungsinfos zum Durchlaufen der Ergebnismenge.
Aktuelle Seitennummer.
Höchste Seitennummer, die GitHub für diese Anfrage bereitstellt.
Absolute URL der nächsten Seite oder
null auf der letzten Seite / beim Ergebnis-Limit.Absolute URL der vorherigen Seite oder
null auf der ersten Seite.True, solange unterhalb des 1000-Ergebnis-Limits eine nächste Seite existiert.
Ergebnisse pro Repository (siehe Felder unten).
Rang des Ergebnisses auf dieser Seite (1-basiert).
Repository-Name.
Login des Eigentümers (Benutzer oder Organisation).
Vollständiger
owner/name-Bezeichner.Absolute Repository-URL.
Repository-Beschreibung.
Primäre Programmiersprache.
Anzahl der Stars.
Auf der Ergebniskarte angezeigte Topic-Labels.
Zeitstempel der letzten Aktualisierung oder relative Angabe, sofern vorhanden.
Auf der Ergebniskarte angezeigte Lizenz, sofern vorhanden.
True, wenn das Repository ein öffentliches Archiv ist.
True, wenn der Eigentümer gesponsert werden kann.
Beispiel-Response
{
"query": "web scraping",
"searchType": "repositories",
"sort": "stars",
"order": "desc",
"totalResults": 133816,
"currentPage": 1,
"pagination": {
"current_page": 1,
"total_pages": 100,
"next_page_url": "https://github.com/search?q=web+scraping&type=repositories&s=stars&o=desc&p=2",
"previous_page_url": null,
"has_next": true
},
"results": [
{
"position": 1,
"name": "scrapy",
"owner": "scrapy",
"fullName": "scrapy/scrapy",
"url": "https://github.com/scrapy/scrapy",
"description": "Scrapy, a fast high-level web crawling & scraping framework for Python.",
"primaryLanguage": "Python",
"stars": 63119,
"topics": ["python", "crawler", "framework", "scraping", "crawling"],
"updatedAt": null,
"license": null,
"archived": false,
"sponsorable": false
}
]
}