crawlbase文档
登录

API 用法

Crawling API 请求中添加 &scraper=exercism-serp。在 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 路径读取的轨道 slug(例如 ruby),无法确定时为 null。
exerciseCount
integer
exercises 中返回的练习数量。
exercises
array
该轨道上的练习,按列表顺序排列。
exercises[].slug
string
练习 slug(URL 片段,例如 two-fer)。
exercises[].type
string
练习类型(例如 practicetutorial)。
exercises[].title
string
练习显示标题。
exercises[].iconUrl
string
练习图标的 URL。
exercises[].difficulty
string
难度标签(例如 easymediumhard)。
exercises[].blurb
string
练习的简短单行描述。
exercises[].isExternal
boolean
当练习托管在该轨道之外时为 true。
exercises[].isUnlocked
boolean
当练习已对查看者解锁时为 true。
exercises[].isRecommended
boolean
当 Exercism 推荐接下来做该练习时为 true。
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"
    }
  ]
}