Crawling API / Exercism

Exercism 抓取工具。
每个赛道,完整渲染。

发送任意 Exercism URL,即可获得完整渲染的 HTML,通过住宅代理并内置反爬处理。
或使用 exercism-serp、exercism-exercise、exercism-solutions 和 exercism-solution 抓取工具获取结构化 JSON。

99% 成功率1.4 亿住宅 IP30 个地区
Exercism URLHTML or JSONexercism.org/tracks/ruby/exercisesCrawlbase路由渲染提取渲染后的 HTML结构化 JSONcrawling-apiexercism-solutionexercism.org · 渲染 + 解析 · 200
实时抓取流 · Exercism1.24M req/min流式传输
301exercism.org/tracks/python/exercisesCA133ms
200exercism.org/tracks/javascript/exercisesJP217ms
200exercism.org/tracks/rust/exercises/reverse-stringIN58ms
200exercism.org/tracks/ruby/exercises/two-fer/solutions/neilnorthropUS214ms
200exercism.org/tracks/go/exercises/weather-forecastES91ms
200exercism.org/tracks/go/exercises/weather-forecastJP48ms
200exercism.org/tracks/python/exercises/leap/solutionsSG105ms
200exercism.org/tracks/python/exercisesCA203ms
301exercism.org/tracks/ruby/exercises/two-fer/solutions/neilnorthropDE105ms
200exercism.org/tracks/rust/exercises/reverse-string/solutions/gorbit99JP120ms
200exercism.org/tracks/ruby/exercisesJP100ms
301exercism.org/tracks/python/exercises/leap/solutionsES137ms
200exercism.org/tracks/csharp/exercisesGB117ms
200exercism.org/tracks/ruby/exercises/two-fer/solutions/neilnorthropSG129ms
200exercism.org/tracks/javascript/exercisesUS190ms
200exercism.org/tracks/javascript/exercisesCA200ms
200exercism.org/tracks/go/exercisesJP128ms
200exercism.org/tracks/ruby/exercises/two-fer/solutionsCA201ms
200exercism.org/tracks/csharp/exercisesNL195ms
200exercism.org/tracks/python/exercises/leap/solutionsGB160ms
200exercism.org/tracks/ruby/exercises/two-fer/solutions/neilnorthropIN71ms
200exercism.org/tracks/ruby/exercises/high-scores/solutionsSG204ms
301exercism.org/tracks/rust/exercises/reverse-string/solutions/gorbit99FR82ms
200exercism.org/tracks/ruby/exercises/high-scores/solutionsSG111ms
200exercism.org/tracks/go/exercises/weather-forecastIN93ms
301exercism.org/tracks/ruby/exercises/high-scores/solutionsGB125ms
301exercism.org/tracks/python/exercisesCA133ms
200exercism.org/tracks/javascript/exercisesJP217ms
200exercism.org/tracks/rust/exercises/reverse-stringIN58ms
200exercism.org/tracks/ruby/exercises/two-fer/solutions/neilnorthropUS214ms
200exercism.org/tracks/go/exercises/weather-forecastES91ms
200exercism.org/tracks/go/exercises/weather-forecastJP48ms
200exercism.org/tracks/python/exercises/leap/solutionsSG105ms
200exercism.org/tracks/python/exercisesCA203ms
301exercism.org/tracks/ruby/exercises/two-fer/solutions/neilnorthropDE105ms
200exercism.org/tracks/rust/exercises/reverse-string/solutions/gorbit99JP120ms
200exercism.org/tracks/ruby/exercisesJP100ms
301exercism.org/tracks/python/exercises/leap/solutionsES137ms
200exercism.org/tracks/csharp/exercisesGB117ms
200exercism.org/tracks/ruby/exercises/two-fer/solutions/neilnorthropSG129ms
200exercism.org/tracks/javascript/exercisesUS190ms
200exercism.org/tracks/javascript/exercisesCA200ms
200exercism.org/tracks/go/exercisesJP128ms
200exercism.org/tracks/ruby/exercises/two-fer/solutionsCA201ms
200exercism.org/tracks/csharp/exercisesNL195ms
200exercism.org/tracks/python/exercises/leap/solutionsGB160ms
200exercism.org/tracks/ruby/exercises/two-fer/solutions/neilnorthropIN71ms
200exercism.org/tracks/ruby/exercises/high-scores/solutionsSG204ms
301exercism.org/tracks/rust/exercises/reverse-string/solutions/gorbit99FR82ms
200exercism.org/tracks/ruby/exercises/high-scores/solutionsSG111ms
200exercism.org/tracks/go/exercises/weather-forecastIN93ms
301exercism.org/tracks/ruby/exercises/high-scores/solutionsGB125ms
01 实时演示

四个 Exercism 抓取工具。每个都返回干净的 JSON。

四个 Exercism 抓取工具,实时输入。exercism-serp 列出赛道的练习,exercism-exercise 拉取带说明的单个练习,exercism-solutions 对社区提交排序,exercism-solution 返回带源代码的单个已发布解答。切换标签,或悬停以暂停并阅读。

就绪
按键 1-4 切换 · 点击暂停运行你自己的 URL
几分钟内运行你的第一个请求。最多 20,000 次免费请求,无需信用卡。免费开始
02 功能

一个 API,覆盖 Exercism 的每个角落。

四个专用抓取工具覆盖重要的页面:赛道练习列表、单个练习、社区解答列表和单个已发布解答。Crawling API 在真实浏览器中渲染每个页面,通过住宅 IP 访问,并交付干净的 HTML 或 JSON。

赛道

每个语言赛道

exercism-serp 将任意赛道练习列表转换为 JSON:每个练习都带有其 slug、类型、标题、难度、简介和解锁状态,外加赛道练习数量。

练习

完整的练习说明

exercism-exercise 返回单个练习概览,带有其标题、难度以及以文本和 HTML 两种形式呈现的完整说明。

解答

社区解答列表

exercism-solutions 返回某个练习的社区解答分页列表,每个都带有作者、语言、星标、评论、浏览、迭代和代码片段。

源代码

完整的已发布解答

添加 scraper=exercism-solution 即可返回一个已发布解答,带有其完整源代码、迭代历史、测试状态和作者。

代理

1.4 亿住宅 IP

每个请求都会在 30 个地区轮换一个住宅 IP,并自动清除机器人检查。无需求解,无需维护。

一个令牌

一个 API 覆盖每个页面

Crawling API 适用于任意 URL,因此同一个令牌覆盖每个 Exercism 赛道以及你抓取的其他一切。 查看实时演示.

03 输出

每个解答字段,都是干净的 JSON。

发送一个解答 URL 并附上 scraper=exercism-solution 解答就会以类型化 JSON 返回,包含源代码。换成 exercism-serpexercism-exerciseexercism-solutions 即可获取列表、说明和社区解答。

{ "url": "https://exercism.org/tracks/ruby/exercises/two-fer/solutions/neilnorthrop", "track": { "slug": "ruby", "title": "Ruby" }, "exercise": { "slug": "two-fer", "type": "practice", "title": "Two Fer", "difficulty": "easy" }, "author": { "handle": "neilnorthrop" }, "language": "ruby", "numStars": 42, "numIterations": 2, "isOutOfDate": false, "publishedIterationIdx": 2, "publishedAt": "2021-03-14T09:12:07Z", "iterations": [ { "idx": 1, "testsStatus": "passed", "isPublished": false }, { "idx": 2, "testsStatus": "passed", "isPublished": true } ], "code": "def two_fer(name = \"you\")\n \"One for #{name}, one for me.\"\nend" }

解答

url · string  track.title · string  language · string  numStars · number

练习

exercise.slug · string  exercise.title · string  exercise.type · string  exercise.difficulty · string

作者

author.handle · string  publishedAt · string  numIterations · number

迭代

iterations[].idx · number  iterations[].testsStatus · string  iterations[].isPublished · boolean

代码

code · string  isOutOfDate · boolean  publishedIterationIdx · number

04 工作原理

一个调用,从 URL 到数据。

每个 Exercism 请求都走同一条路径。你发送一个 URL,我们运营其间的一切。

01

发送 URL

用你的令牌传入任意公开的 Exercism URL:赛道练习列表、练习、解答列表或单个已发布解答。

02

轮换代理

从 30 个地区的 1.4 亿 IP 中,选取能干净访问站点的住宅 IP 和地区。

03

渲染页面

真实浏览器加载页面,使得练习、解答和代码在捕获前完成渲染。

04

清除反爬

站点的机器人检查和限流都会自动处理。无需求解,无需维护。

05

返回 HTML 或 JSON

返回完整渲染的 HTML,或在你添加 exercism-serp、exercism-exercise、exercism-solutions 或 exercism-solution 时返回类型化 JSON。

05 使用场景

团队用 Exercism 数据构建什么。

USE / 01训练

代码训练数据与 RAG

通过一个 API 将干净的练习提示和真实的已发布解答喂给模型、RAG 管道和编码代理。

USE / 02基准

解答基准

跨语言组装结构化的解答数据集,带有星标、迭代和测试状态,用于评估和基准。

USE / 03课程

课程与目录同步

镜像赛道练习列表、类型、难度和解锁顺序,使学习平台和目录保持同步。

USE / 04研究

语言与风格研究

比较同一个练习在不同语言和作者间的解法,研究惯用法、模式和迭代历史。

USE / 05内容

文档与内容管道

以文本和 HTML 形式提取练习说明,为教程、文档和学习指南提供支持。

USE / 06覆盖

任意 URL,一个 API

抓取赛道、练习、解答列表和单个解答,外加你需要的任何其他站点。

06 须知

抓取 Exercism 时需要了解的要点。

四个抓取工具,四种页面类型

exercism-serp 读取赛道练习列表,exercism-exercise 读取单个练习,exercism-solutions 读取社区解答列表,exercism-solution 读取一个带代码的已发布解答。

默认 HTML,按需 JSON

你会得到完整渲染的 HTML。添加 scraper=exercism-serp、exercism-exercise、exercism-solutions 或 exercism-solution 获取已解析的 JSON,或自行解析 HTML。

解答列表是分页的

exercism-solutions 在 solutions 数组之外返回 page、totalPages、totalCount 和 solutionCount,因此你可以遍历某个练习的每一页。

从任何地方访问站点

覆盖 30 个地区和 1.4 亿住宅 IP 的地理定位意味着无需管理代理即可稳定访问。

07 为何选择 Crawlbase

为大规模抓取 Exercism 而生。

Crawling API 运行在同一张网络上,为超过 46,000 名付费客户和 70,000 名开发者提供服务。无需购买代理,无需运行浏览器,站点变更时也无需打补丁。

99%
平均请求成功率
140M
住宅 IP,另加 9800 万数据中心 IP
30
用于精确本地结果的地区数
20/s
默认每秒请求数,可按需提升

一个令牌,面向 Python、Node 和 Ruby 的官方 SDK,底层是 99.99% 可用性的网络。

08 常见问题

关于抓取 Exercism 的问题。

用你的令牌将任意 Exercism URL 发送到 Crawlbase Crawling API。Crawlbase 会轮换一个住宅代理,在真实浏览器中渲染页面,清除机器人检查,并返回完整渲染的 HTML。添加专用抓取工具(scraper=exercism-serpexercism-exerciseexercism-solutionsexercism-solution)即可改为获取结构化 JSON。
可以。默认情况下 Crawling API 返回渲染后的 HTML;添加专用抓取工具即可接收结构化 JSON:exercism-serp 用于赛道练习列表,exercism-exercise 用于单个练习,exercism-solutions 用于社区解答列表,exercism-solution 用于带迭代和代码的一个已发布解答。
赛道练习列表、单个练习页面、社区解答列表和单个已发布解答,覆盖 exercism.org 上的每个语言赛道。同一个 API 也适用于任何其他站点。
Crawlbase 通过 30 个地区的轮换住宅 IP 路由每个请求,并自动清除机器人检查,因此访问保持稳定,站点更改配置时也无需维护。
exercism-serp 返回赛道练习列表,每个条目都带有其 slug、类型、标题、难度、简介和解锁状态。exercism-exercise 返回单个练习概览和完整说明。exercism-solutions 返回带作者、语言、星标、评论、浏览和迭代数的社区解答分页列表。exercism-solution 返回一个已发布解答,带有其完整源代码、迭代历史和作者。
可以。exercism-solution 抓取工具返回已发布解答的完整源代码,外加其迭代历史、测试状态、星标数和作者句柄。
免费开始,最多 20,000 次请求且无需信用卡。付费套餐随用量扩展,同一个令牌在 Crawling API 和每个 Crawlbase 抓取工具中通用。

开始抓取 Exercism。
省去代理和限流。

免费开始,最多 20,000 次请求。一个令牌用于 Crawling API 和每个抓取工具。