Упражнения Exercism
Разбирайте страницу списка упражнений трека Exercism в структурированный JSON со слагом, заголовком, сложностью, описанием и состоянием разблокировки каждого упражнения.
Использование API
Добавьте &scraper=exercism-serp к запросу Crawling API. URL-кодируйте целевой URL в параметре 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)Пример входного URL
В параметре url работает любая страница списка упражнений трека Exercism - страница по адресу /tracks/<track>/exercises для любого языкового трека. Например:
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Структура ответа
Тело ответа в формате JSON. Типы полей могут быть null, если исходная страница не содержит значения.
URL страницы списка упражнений трека, которая была обработана.
Слаг трека, прочитанный из пути URL (например,
ruby), или null, если его не удалось определить.Количество упражнений, возвращённых в
exercises.Упражнения на треке, в порядке списка.
Слаг упражнения (фрагмент URL, например
two-fer).Тип упражнения (например,
practice или tutorial).Отображаемый заголовок упражнения.
URL иконки упражнения.
Метка сложности (например,
easy, medium, hard).Краткое однострочное описание упражнения.
True, если упражнение размещено вне трека.
True, если упражнение разблокировано для пользователя.
True, если Exercism рекомендует упражнение следующим.
Канонический URL страницы обзора упражнения, или null, если отсутствует.
Пример ответа
{
"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"
}
]
}