crawlbase文档
登录
每日挑战会作为额外一行返回

LeetCode 会把每日挑战置顶在分页表格上方,因此完整一页返回的条目会比页面大小多一条 - 先是置顶题目,然后才是表格中的行。它是唯一一条 isDailyQuestiontrue 的条目,如果只需要表格内容,据此过滤即可。

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' -G
from 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
string
被抓取的题库列表的 URL。
totalProblems
integer | null
LeetCode 针对当前筛选条件在所有页面上报告的题目总数。
problemCount
integer
本页在 problems 中返回的条目数量。
problems
array
页面上找到的题目行,按其列出顺序排列。
problems[].id
string | null
列表中显示的题号,以字符串返回。
problems[].title
string | null
题目显示标题。
problems[].titleSlug
string | null
题目的 URL slug,可用于构造任意其他 LeetCode 题目 URL。
problems[].url
string | null
题目页面的绝对 URL。
problems[].difficulty
string | null
难度标签 - EasyMediumHard
problems[].acceptanceRate
string | null
页面上显示的通过率,含百分号。
problems[].isPremium
boolean
该题目是否需要 LeetCode 订阅才能访问。
problems[].isDailyQuestion
boolean
该行是否为置顶的每日挑战。

示例响应

{
  "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
    }
  ]
}