crawlbaseDocs
Se connecter

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' -G
from 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/exercises

Structure de la réponse

Corps de la réponse JSON. Les types de champs peuvent être null lorsque la page source omet la valeur.

trackUrl
string
URL de la page de liste d'exercices de la piste qui a été scrapée.
track
string | null
Slug de la piste lu depuis le chemin de l'URL (par exemple ruby), ou null lorsqu'il ne peut pas être déterminé.
exerciseCount
integer
Nombre d'exercices renvoyés dans exercises.
exercises
array
Exercices de la piste, dans l'ordre de la liste.
exercises[].slug
string
Slug de l'exercice (fragment d'URL, par exemple two-fer).
exercises[].type
string
Type d'exercice (par exemple practice ou tutorial).
exercises[].title
string
Titre affiché de l'exercice.
exercises[].iconUrl
string
URL de l'icône de l'exercice.
exercises[].difficulty
string
Libellé de difficulté (par exemple easy, medium, hard).
exercises[].blurb
string
Courte description d'une ligne de l'exercice.
exercises[].isExternal
boolean
True lorsque l'exercice est hébergé en dehors de la piste.
exercises[].isUnlocked
boolean
True lorsque l'exercice est déverrouillé pour le lecteur.
exercises[].isRecommended
boolean
True lorsque Exercism recommande l'exercice suivant.
exercises[].url
string | null
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"
    }
  ]
}