crawlbaseДокументация
Войти

Использование 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' -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)

Пример входного 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, если исходная страница не содержит значения.

trackUrl
string
URL страницы списка упражнений трека, которая была обработана.
track
string | null
Слаг трека, прочитанный из пути URL (например, ruby), или null, если его не удалось определить.
exerciseCount
integer
Количество упражнений, возвращённых в exercises.
exercises
array
Упражнения на треке, в порядке списка.
exercises[].slug
string
Слаг упражнения (фрагмент URL, например two-fer).
exercises[].type
string
Тип упражнения (например, practice или tutorial).
exercises[].title
string
Отображаемый заголовок упражнения.
exercises[].iconUrl
string
URL иконки упражнения.
exercises[].difficulty
string
Метка сложности (например, easy, medium, hard).
exercises[].blurb
string
Краткое однострочное описание упражнения.
exercises[].isExternal
boolean
True, если упражнение размещено вне трека.
exercises[].isUnlocked
boolean
True, если упражнение разблокировано для пользователя.
exercises[].isRecommended
boolean
True, если Exercism рекомендует упражнение следующим.
exercises[].url
string | null
Канонический 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"
    }
  ]
}