Exercices Exercism
Analysez une page de liste d'exercices d'une piste Exercism en JSON structuré avec, pour chaque exercice, le slug, le titre, la difficulté, le résumé et l'état de déverrouillage.
Utilisation de l'API
Ajoutez &scraper=exercism-serp à une requête Crawling API. Encodez en URL l'URL cible dans le paramètre url.
curl 'https://api.crawlbase.com/?token=YOUR_TOKEN' \
--data-urlencode 'url=https://exercism.org/tracks/ruby/exercises' \
--data-urlencode 'scraper=exercism-serp' -Gfrom crawlbase import CrawlingAPI
api = CrawlingAPI({'token': 'YOUR_TOKEN'})
res = api.get(
'https://exercism.org/tracks/ruby/exercises',
{'scraper': 'exercism-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://exercism.org/tracks/ruby/exercises',
{ scraper: 'exercism-serp' }
);
const data = JSON.parse(res.body);require 'crawlbase'
api = Crawlbase::API.new(token: 'YOUR_TOKEN')
res = api.get('https://exercism.org/tracks/ruby/exercises', scraper: 'exercism-serp')
data = JSON.parse(res.body)Exemple d'URL en entrée
N'importe quelle page de liste d'exercices d'une piste Exercism fonctionne dans le paramètre url - la page située à /tracks/<track>/exercises pour n'importe quelle piste de langage. Par exemple :
https://exercism.org/tracks/ruby/exercises
https://exercism.org/tracks/python/exercises
https://exercism.org/tracks/go/exercises
https://exercism.org/tracks/javascript/exercises
https://exercism.org/tracks/rust/exercisesStructure de la réponse
Corps de la réponse JSON. Les types de champs peuvent être null lorsque la page source omet la valeur.
URL de la page de liste d'exercices de la piste qui a été scrapée.
Slug de la piste lu depuis le chemin de l'URL (par exemple
ruby), ou null lorsqu'il ne peut pas être déterminé.Nombre d'exercices renvoyés dans
exercises.Exercices de la piste, dans l'ordre de la liste.
Slug de l'exercice (fragment d'URL, par exemple
two-fer).Type d'exercice (par exemple
practice ou tutorial).Titre affiché de l'exercice.
URL de l'icône de l'exercice.
Libellé de difficulté (par exemple
easy, medium, hard).Courte description d'une ligne de l'exercice.
True lorsque l'exercice est hébergé en dehors de la piste.
True lorsque l'exercice est déverrouillé pour le lecteur.
True lorsque Exercism recommande l'exercice suivant.
URL canonique de la page de présentation de l'exercice, ou null lorsqu'elle est absente.
Exemple de réponse
{
"trackUrl": "https://exercism.org/tracks/ruby/exercises",
"track": "ruby",
"exerciseCount": 3,
"exercises": [
{
"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.\"",
"isExternal": false,
"isUnlocked": true,
"isRecommended": false,
"url": "https://exercism.org/tracks/ruby/exercises/two-fer"
},
{
"slug": "hello-world",
"type": "practice",
"title": "Hello World",
"iconUrl": "https://assets.exercism.org/exercises/hello-world.svg",
"difficulty": "easy",
"blurb": "The classical introductory exercise. Just say \"Hello, World!\"",
"isExternal": false,
"isUnlocked": true,
"isRecommended": true,
"url": "https://exercism.org/tracks/ruby/exercises/hello-world"
},
{
"slug": "grains",
"type": "practice",
"title": "Grains",
"iconUrl": "https://assets.exercism.org/exercises/grains.svg",
"difficulty": "medium",
"blurb": "Calculate the number of grains of wheat on a chessboard.",
"isExternal": false,
"isUnlocked": true,
"isRecommended": false,
"url": "https://exercism.org/tracks/ruby/exercises/grains"
}
]
}