Упражнение Exercism
Разбирайте страницу обзора одного упражнения Exercism в структурированный JSON с его заголовком, сложностью и полными инструкциями в виде текста и HTML.
Использование API
Добавьте &scraper=exercism-exercise к запросу Crawling API. URL-кодируйте целевой URL в параметре url.
curl 'https://api.crawlbase.com/?token=YOUR_TOKEN' \
--data-urlencode 'url=https://exercism.org/tracks/ruby/exercises/two-fer' \
--data-urlencode 'scraper=exercism-exercise' -Gfrom crawlbase import CrawlingAPI
api = CrawlingAPI({'token': 'YOUR_TOKEN'})
res = api.get(
'https://exercism.org/tracks/ruby/exercises/two-fer',
{'scraper': 'exercism-exercise'}
)
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',
{ scraper: 'exercism-exercise' }
);
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', scraper: 'exercism-exercise')
data = JSON.parse(res.body)Пример входного URL
В параметре url работает любая страница обзора упражнения Exercism - страница по адресу /tracks/<track>/exercises/<slug>. Например:
https://exercism.org/tracks/ruby/exercises/two-fer
https://exercism.org/tracks/python/exercises/leap
https://exercism.org/tracks/go/exercises/hello-world
https://exercism.org/tracks/rust/exercises/grainsСтруктура ответа
Тело ответа в формате JSON. Типы полей могут быть null, если исходная страница не содержит значения.
URL страницы упражнения, которая была обработана.
Слаг трека, прочитанный из пути URL (например,
ruby), или null, если его не удалось определить.Слаг упражнения, прочитанный из пути URL (например,
two-fer), или null, если его не удалось определить.Отображаемый заголовок упражнения.
Метка сложности (например,
easy, medium, hard).Полные инструкции упражнения в виде обычного текста, с сжатыми пробелами.
Полные инструкции упражнения в виде HTML, с сохранением заголовков, блоков кода и списков.
Пример ответа
{
"url": "https://exercism.org/tracks/ruby/exercises/two-fer",
"track": "ruby",
"slug": "two-fer",
"title": "Two Fer",
"difficulty": "easy",
"instructions": "Two Fer Two-fer is short for two for one. One for you and one for me. Given a name, return a string with the message: One for name, one for me. Where \"name\" is the given name. However, if the name is missing, return the string: One for you, one for me.",
"instructionsHtml": "Instructions
\nTwo-fer is short for two for one. One for you and one for me.
\nGiven a name, return a string with the message:
\nOne for name, one for me.
"
}