LeetCode Problem Set
将 LeetCode 题库列表解析为结构化 JSON,包含每道题目的 id、标题、难度、通过率、会员标记和 URL。
每日挑战会作为额外一行返回
LeetCode 会把每日挑战置顶在分页表格上方,因此完整一页返回的条目会比页面大小多一条 - 先是置顶题目,然后才是表格中的行。它是唯一一条 isDailyQuestion 为 true 的条目,如果只需要表格内容,据此过滤即可。
API 用法
在 Crawling API 请求中加上 &scraper=leetcode-serp。目标 URL 需经过 URL 编码后放入 url 参数。
curl 'https://api.crawlbase.com/?token=YOUR_TOKEN' \
--data-urlencode 'url=https://leetcode.com/problemset/' \
--data-urlencode 'scraper=leetcode-serp' -Gfrom crawlbase import CrawlingAPI
api = CrawlingAPI({'token': 'YOUR_TOKEN'})
res = api.get(
'https://leetcode.com/problemset/',
{'scraper': 'leetcode-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://leetcode.com/problemset/',
{ scraper: 'leetcode-serp' }
);
const data = JSON.parse(res.body);require 'crawlbase'
api = Crawlbase::API.new(token: 'YOUR_TOKEN')
res = api.get('https://leetcode.com/problemset/', scraper: 'leetcode-serp')
data = JSON.parse(res.body)示例输入 URL
url 参数支持任意 LeetCode 题库列表 - 即 /problemset/ 上的未筛选列表或某个筛选视图。例如:
https://leetcode.com/problemset/
https://leetcode.com/problemset/?difficulty=EASY
https://leetcode.com/problemset/?topicSlugs=dynamic-programming响应结构
JSON 响应体。当源页面省略对应值时,字段类型可能为 null。
被抓取的题库列表的 URL。
LeetCode 针对当前筛选条件在所有页面上报告的题目总数。
本页在
problems 中返回的条目数量。页面上找到的题目行,按其列出顺序排列。
列表中显示的题号,以字符串返回。
题目显示标题。
题目的 URL slug,可用于构造任意其他 LeetCode 题目 URL。
题目页面的绝对 URL。
难度标签 -
Easy、Medium 或 Hard。页面上显示的通过率,含百分号。
该题目是否需要 LeetCode 订阅才能访问。
该行是否为置顶的每日挑战。
示例响应
{
"url": "https://leetcode.com/problemset/",
"totalProblems": 4013,
"problemCount": 101,
"problems": [
{
"id": "3626",
"title": "Smallest Divisible Digit Product I",
"titleSlug": "smallest-divisible-digit-product-i",
"url": "https://leetcode.com/problems/smallest-divisible-digit-product-i",
"difficulty": "Easy",
"acceptanceRate": "71.0%",
"isPremium": false,
"isDailyQuestion": true
},
{
"id": "1",
"title": "Two Sum",
"titleSlug": "two-sum",
"url": "https://leetcode.com/problems/two-sum",
"difficulty": "Easy",
"acceptanceRate": "57.9%",
"isPremium": false,
"isDailyQuestion": false
},
{
"id": "2",
"title": "Add Two Numbers",
"titleSlug": "add-two-numbers",
"url": "https://leetcode.com/problems/add-two-numbers",
"difficulty": "Medium",
"acceptanceRate": "49.1%",
"isPremium": false,
"isDailyQuestion": false
}
]
}