Exercism Solution
Parsen Sie eine einzelne veröffentlichte Exercism-Lösungsseite in strukturiertes JSON mit Track, Übung, Autor, Sprache, Iterationsverlauf und vollständigem Quellcode.
API-Nutzung
Fügen Sie &scraper=exercism-solution zu einem Crawling API-Request hinzu. URL-kodieren Sie die Ziel-URL im url-Parameter.
curl 'https://api.crawlbase.com/?token=YOUR_TOKEN' \
--data-urlencode 'url=https://exercism.org/tracks/ruby/exercises/two-fer/solutions/neilnorthrop' \
--data-urlencode 'scraper=exercism-solution' -Gfrom crawlbase import CrawlingAPI
api = CrawlingAPI({'token': 'YOUR_TOKEN'})
res = api.get(
'https://exercism.org/tracks/ruby/exercises/two-fer/solutions/neilnorthrop',
{'scraper': 'exercism-solution'}
)
import json
data = json.loads(res['body'])const { CrawlingAPI } = require('crawlbase');
const api = new CrawlingAPI({ token: 'YOUR_TOKEN' });
const res = await api.get(
'https://exercism.org/tracks/ruby/exercises/two-fer/solutions/neilnorthrop',
{ scraper: 'exercism-solution' }
);
const data = JSON.parse(res.body);require 'crawlbase'
api = Crawlbase::API.new(token: 'YOUR_TOKEN')
res = api.get('https://exercism.org/tracks/ruby/exercises/two-fer/solutions/neilnorthrop', scraper: 'exercism-solution')
data = JSON.parse(res.body)Beispiel-Eingabe-URL
Im url-Parameter funktioniert jede einzelne veröffentlichte Exercism-Lösungsseite - die Seite unter /tracks/<track>/exercises/<slug>/solutions/<handle>. Zum Beispiel:
https://exercism.org/tracks/ruby/exercises/two-fer/solutions/neilnorthrop
https://exercism.org/tracks/go/exercises/hello-world/solutions/erikschierboomResponse-Struktur
JSON-Response-Body. Feldtypen können null sein, wenn die Quellseite den Wert nicht enthält.
URL der gescrapten Lösungsseite.
Track, zu dem die Lösung gehört.
Track-Slug (zum Beispiel
ruby).Anzeigetitel des Tracks (zum Beispiel
Ruby).URL des Track-Symbols.
Übung, zu der die Lösung gehört.
Übungs-Slug (zum Beispiel
two-fer).Übungstyp (zum Beispiel
practice oder concept).Anzeigetitel der Übung.
URL des Übungssymbols.
Schwierigkeitsbezeichnung (zum Beispiel
easy, medium, hard).Kurze Übungsbeschreibung.
Autor der Lösung.
Autoren-Handle (Exercism-Benutzername).
Programmiersprache der Lösung.
Vom Autor verwendete Editor-Einrückungsgröße, oder null, wenn nicht angegeben.
Anzahl der Sterne der Lösung.
Anzahl der Iterationen im
iterations-Array.True, wenn die Lösung gegenüber der aktuellen Übung veraltet ist.
Index (
idx) der veröffentlichten Iteration, oder null, wenn keine vorhanden ist.Veröffentlichungszeit der Lösung (ISO 8601), oder null, wenn nicht vorhanden.
Iterationsverlauf der Lösung, älteste zuerst.
Iterationsindex (1-basiert).
Analysestatus der Iteration (zum Beispiel
no_automated_feedback).Testlaufstatus der Iteration (zum Beispiel
passed).Art der Einreichung der Iteration (zum Beispiel
cli oder api).Erstellungszeit der Iteration (ISO 8601), oder null, wenn nicht vorhanden.
True, wenn diese Iteration die veröffentlichte ist.
True, wenn diese Iteration die neueste ist.
Vollständiger Quellcode der veröffentlichten Lösung, oder null, wenn nicht vorhanden.
Beispiel-Response
{
"url": "https://exercism.org/tracks/ruby/exercises/two-fer/solutions/neilnorthrop",
"track": {
"slug": "ruby",
"title": "Ruby",
"iconUrl": "https://assets.exercism.org/tracks/ruby.svg"
},
"exercise": {
"slug": "two-fer",
"type": "practice",
"title": "Two Fer",
"iconUrl": "https://assets.exercism.org/exercises/two-fer.svg",
"difficulty": "easy",
"blurb": "Create a sentence of the form \"One for X, one for me.\""
},
"author": {
"handle": "neilnorthrop"
},
"language": "ruby",
"indentSize": 2,
"numStars": 42,
"numIterations": 2,
"isOutOfDate": false,
"publishedIterationIdx": 2,
"publishedAt": "2026-05-18T14:03:27Z",
"iterations": [
{
"idx": 1,
"status": "no_automated_feedback",
"testsStatus": "passed",
"submissionMethod": "cli",
"createdAt": "2026-05-17T22:41:03Z",
"isPublished": false,
"isLatest": false
},
{
"idx": 2,
"status": "no_automated_feedback",
"testsStatus": "passed",
"submissionMethod": "cli",
"createdAt": "2026-05-18T14:03:27Z",
"isPublished": true,
"isLatest": true
}
],
"code": "def two_fer(name = \"you\")\n \"One for #{name}, one for me.\"\nend"
}