crawlbase文档
登录

概述

开发者类别涵盖了工程团队用于开源情报、依赖与生态系统分析、开发者关系研究、招聘/寻源信号以及技术问答挖掘的各类平台。每个抓取器都接受一个目标 URL,在毫秒级返回已解析的 JSON,并借助与 Crawling API 相同的住宅代理和反机器人绕过能力 - 相同的可用性 SLA、相同的单 token 认证,无需针对每个目标进行设置。

核心集合面向 GitHub,这是最大的公共源代码托管平台。按你需要的页面选择抓取器:单个仓库页面、仓库搜索结果页面(SERP)或用户/组织资料。每个抓取器只面向一种页面类型,因此即使底层 HTML 发生变化,JSON 结构也保持稳定 - 而且你只为成功的响应付费,因此针对不稳定上游的重试不会出现在你的账单上。

Stack Overflow 同样被涵盖。它是 Stack Exchange 网络的一部分,因此由同样这两个与主机无关的抓取器处理 - 无需再学习单独的 Stack Overflow 抓取器。将 stackexchange-serp 指向问题列表、标签或搜索页面(例如 https://stackoverflow.com/questions/tagged/python),可获得包含分数、回答数与浏览量以及标签的结构化问题数组;将 stackexchange-thread 指向单个问题(例如 https://stackoverflow.com/questions/11227809/why-is-processing-a-sorted-array-faster-than-processing-an-unsorted-array),可获得完整正文以及每个回答和评论。无论 URL 位于 stackoverflow.com 还是任何其他 *.stackexchange.com 站点,该网络解析器都能处理其标记。

Exercism 由四个抓取器覆盖这个编程练习平台。将 exercism-serp 指向某个轨道的练习列表(例如 https://exercism.org/tracks/ruby/exercises),可获得每个练习及其 slug、难度和简介;将 exercism-exercise 指向单个练习(例如 /tracks/ruby/exercises/two-fer),可获得其以文本和 HTML 呈现的完整说明;将 exercism-solutions 指向某个练习的社区解决方案,可获得带作者、语言和星标数的已发布解决方案分页数组;将 exercism-solution 指向单个已发布解决方案(例如 /tracks/ruby/exercises/two-fer/solutions/handle),可获得其迭代、元数据和源代码。

常见流程:

  • 生态系统监控:对你所依赖的项目查询 github-repository,对 starsforksopenIssuesCountlatestReleasearchived 拍快照,并在出现 Δ 时告警。
  • 发现:将 github-serp 查询(例如按主题或关键词搜索)馈入一系列 github-repository 调用,为每个结果补充完整元数据。
  • 开发者寻源 / DevRel:解析 github-profile 以读取 followerspublicRepospinnedReposorganizations
  • 依赖情报:跨仓库组合跟踪 primaryLanguagelanguageslicensetopics,以发现许可或维护风险。
  • 问答挖掘:对某个标签或搜索应用 stackexchange-serp(例如 stackoverflow.com/questions/tagged/python),然后按问题扇出到 stackexchange-thread,以捕获已采纳的回答、代码块和投票分数 - 一个可用于支持自动化或模型训练的干净语料库。
  • 解决方案挖掘:对某个轨道运行 exercism-serp,按练习扇出到 exercism-solutions,再按作者扇出到 exercism-solution,从而构建一个标注好的语料库,汇集针对同一问题、跨多种语言的可运行代码。

每个字段都直接映射页面所渲染的内容,当源页面省略某个值时,nullable 字段会返回 null,而不是悄然消失 - 这样你的 schema 在多次调用间保持可预测。无需 GitHub 或 Stack Exchange 的 API token,无需在你这一侧处理速率限制或分页记账:抓取器负责获取和解析,你拿回真正需要的字段。

GitHub

三个抓取器,覆盖团队查询最多的 GitHub 页面 - 单个仓库页面、仓库搜索结果,以及用户或组织资料。

  • GitHub Repository - 仓库页面(描述、语言、stars、forks、issues、许可证、最新 release)。
  • GitHub SERP - GitHub 上的仓库搜索结果页面。
  • GitHub Profile - 用户或组织资料(简介、关注者、置顶仓库、组织)。

Stack Overflow

Stack Overflow 由 Stack Exchange 抓取器提供服务 - 将其指向 stackoverflow.com 的 URL。使用 stackexchange-serp 处理问题列表、标签页面和搜索结果,使用 stackexchange-thread 处理带有完整回答讨论串的单个问题。两者在整个 Stack Exchange 网络中都与主机无关,因此同一种调用形式适用于任何 *.stackexchange.com 站点。

  • Stack Overflow Questions - 将 Stack Overflow 的问题、标签(例如 /questions/tagged/python)或搜索结果页面作为结构化数组返回,包含分数、回答数与浏览量、标签和分页。
  • Stack Overflow Thread - 单个 Stack Overflow 问题及其完整正文,外加每个回答和评论,包含分数、采纳状态和作者。

Exercism

四个抓取器,覆盖 Exercism 编程练习平台 - 某个轨道的练习列表、带说明的单个练习、某个练习的社区解决方案列表,以及单个已发布解决方案。将它们指向 exercism.org 的 URL;轨道和练习 slug 从 URL 路径中读取。

  • Exercism Exercises - 将某个轨道的练习列表页面(例如 /tracks/ruby/exercises)作为结构化的练习数组返回,包含 slug、标题、难度和简介。
  • Exercism Exercise - 单个练习概览页面,包含其标题、难度以及以文本和 HTML 呈现的完整说明。
  • Exercism Solutions - 将某个练习的社区解决方案页面作为已发布解决方案的分页数组返回,包含作者、语言、星标数和迭代次数。
  • Exercism Solution - 单个已发布的社区解决方案,包含其迭代、语言、星标数和源代码。

Kaggle

四个抓取器,覆盖 Kaggle 数据科学平台 - 数据集搜索、包含文件与许可证的单个数据集、notebook 搜索,以及包含元数据与输入的单个 notebook。将它们指向 kaggle.com 的 URL;所有者以及数据集或 notebook 的 slug 从 URL 路径中读取。

  • Kaggle Dataset Search - 将数据集搜索或列表页面(例如 /datasets?search=heart+disease)作为排序的数据集数组返回,包含所有者、大小、可用性评分、下载量和 notebook 数量。
  • Kaggle Dataset - 单个数据集页面,包含其描述、关键词、所有者、许可证、文件列表和互动数据。
  • Kaggle Notebook Search - 将 notebook 搜索或列表页面(例如 /code?searchQuery=titanic)作为排序的 notebook 数组返回,包含作者、共同作者、竞赛上下文、点赞数和评论。
  • Kaggle Notebook - 单个 notebook 页面,包含其作者、语言、运行时长、版本历史、互动数据和关联的输入。

调用示例

下面是一次 github-repository 调用。将 YOUR_TOKEN 替换为你的 Crawling API token;唯一必需的参数是目标 URL 和抓取器名称。

curl 'https://api.crawlbase.com/?token=YOUR_TOKEN' \
  --data-urlencode 'url=https://github.com/rails/rails' \
  --data-urlencode 'scraper=github-repository' -G

响应示例

{
  "name": "rails",
  "owner": "rails",
  "fullName": "rails/rails",
  "url": "https://github.com/rails/rails",
  "description": "Ruby on Rails",
  "primaryLanguage": "Ruby",
  "languages": ["Ruby", "JavaScript", "HTML", "SCSS", "CSS", "Dockerfile"],
  "stars": 58789,
  "forks": 22414,
  "watchers": 2400,
  "hasIssues": true,
  "openIssuesCount": 478,
  "openPrsCount": 1081,
  "topics": ["ruby", "rails", "html", "activerecord", "framework", "mvc", "activejob"],
  "license": "MIT license",
  "defaultBranch": "main",
  "latestRelease": "v8.1.3",
  "readmePresent": true,
  "archived": false
}

完整参考(参数、全部 4 种 SDK 语言、边界情况): GitHub Repository - 完整参考