crawlbaseДокументация
Войти
Premium-задачи возвращают только метаданные

Задача, у которой isPremium равно true, сохраняет идентифицирующие поля - id, название, сложность, тематические теги, - но условие и счётчики вовлечённости на странице отсутствуют, поэтому description, descriptionHtml и счётчики возвращаются пустыми.

Использование API

Добавьте &scraper=leetcode-problem к запросу Crawling API. Целевой URL передавайте в параметре url в URL-кодировке.

curl 'https://api.crawlbase.com/?token=YOUR_TOKEN' \
  --data-urlencode 'url=https://leetcode.com/problems/two-sum/' \
  --data-urlencode 'scraper=leetcode-problem' -G
from crawlbase import CrawlingAPI

api = CrawlingAPI({'token': 'YOUR_TOKEN'})
res = api.get(
    'https://leetcode.com/problems/two-sum/',
    {'scraper': 'leetcode-problem'}
)

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/problems/two-sum/',
  { scraper: 'leetcode-problem' }
);
const data = JSON.parse(res.body);
require 'crawlbase'
api = Crawlbase::API.new(token: 'YOUR_TOKEN')

res = api.get('https://leetcode.com/problems/two-sum/', scraper: 'leetcode-problem')
data = JSON.parse(res.body)

Пример входного URL

В параметре url работает любая страница задачи LeetCode - страница по адресу /problems/<slug>. Например:

https://leetcode.com/problems/two-sum/
https://leetcode.com/problems/add-two-numbers/
https://leetcode.com/problems/longest-substring-without-repeating-characters/

Структура ответа

Тело JSON-ответа. Типы полей могут быть null, если исходная страница не содержит значения.

url
string
URL обработанной страницы задачи.
id
string | null
Номер задачи, как показан на странице, возвращается строкой.
internalId
string | null
Внутренний идентификатор вопроса в LeetCode. Обычно совпадает с id, но у старых задач эти значения расходятся.
title
string | null
Отображаемое название задачи.
titleSlug
string | null
URL-слаг задачи.
difficulty
string | null
Метка сложности - Easy, Medium или Hard.
category
string | null
Категория задачи, например Algorithms или Database.
isPremium
boolean
Требует ли задача подписки LeetCode.
descriptionHtml
string | null
Условие задачи в виде HTML с сохранённой исходной разметкой, чтобы примеры, ограничения и встроенный код остались в целости.
description
string | null
Условие задачи в виде простого текста.
likes
integer | null
Число положительных оценок задачи.
dislikes
integer | null
Число отрицательных оценок задачи.
acceptedCount
integer | null
Число принятых отправок.
submissionCount
integer | null
Общее число отправок.
acceptanceRate
string | null
Доля принятых решений, как показана, вместе со знаком процента.
commentCount
integer | null
Число комментариев в обсуждении задачи.
topicTags
array
Теги алгоритмов и структур данных, назначенные задаче.
topicTags[].name
string | null
Отображаемое название тега.
topicTags[].slug
string | null
URL-слаг тега.
hints
array
Подсказки, опубликованные вместе с задачей, в виде массива строк простого текста.
exampleTestcases
array
Входные данные тестовых примеров по умолчанию, в виде массива строк. Каждая строка сохраняет переводы строк, разделяющие её аргументы.
codeSnippets
array
Заготовки кода, которые LeetCode предоставляет для задачи.
codeSnippets[].language
string | null
Отображаемое название языка, например Python3.
codeSnippets[].languageSlug
string | null
Слаг языка, например python3.
codeSnippets[].code
string | null
Сама заготовка, с исходными отступами.
similarQuestions
array
Задачи, которые LeetCode отмечает как связанные.
similarQuestions[].title
string | null
Название связанной задачи.
similarQuestions[].titleSlug
string | null
URL-слаг связанной задачи.
similarQuestions[].url
string | null
Абсолютный URL связанной задачи.
similarQuestions[].difficulty
string | null
Метка сложности связанной задачи.
similarQuestions[].isPremium
boolean
Требует ли связанная задача подписки.
officialSolution
object
Состояние собственного разбора LeetCode для этой задачи.
officialSolution.available
boolean
Существует ли официальное решение.
officialSolution.isFree
boolean
Доступно ли официальное решение для чтения без подписки.
officialSolution.hasVideo
boolean
Содержит ли официальное решение видеоразбор.
solutionsUrl
string | null
Абсолютный URL вкладки решений сообщества для этой задачи.

Пример ответа

{
  "url": "https://leetcode.com/problems/two-sum/",
  "id": "1",
  "internalId": "1",
  "title": "Two Sum",
  "titleSlug": "two-sum",
  "difficulty": "Easy",
  "category": "Algorithms",
  "isPremium": false,
  "descriptionHtml": "

You are given an array of integers nums and an integer target, return indices of t...", "description": "You are given an array of integers nums and an integer target, return indices of the two numbers such that they add up t...", "likes": 69478, "dislikes": 2592, "acceptedCount": 22929319, "submissionCount": 39569455, "acceptanceRate": "57.9%", "commentCount": 3490, "topicTags": [ { "name": "Array", "slug": "array" }, { "name": "Hash Table", "slug": "hash-table" } ], "hints": [ "A really brute force way would be to search for all possible pairs of numbers but that would be too slow. Again, it's best to try out brute force solutions just for completeness. It is from these brute force solutions that you can come up with optimizations." ], "exampleTestcases": [ "[2,7,11,15]\n9", "[3,2,4]\n6", "[3,3]\n6" ], "codeSnippets": [ { "language": "Python3", "languageSlug": "python3", "code": "class Solution:\n def twoSum(self, nums: List[int], target: int) -> List[int]:\n " }, { "language": "JavaScript", "languageSlug": "javascript", "code": "/**\n * @param {number[]} nums\n * @param {number} target\n * @return {number[]}\n */\nvar twoSum = function(nums, target) {\n \n};" } ], "similarQuestions": [ { "title": "3Sum", "titleSlug": "3sum", "url": "https://leetcode.com/problems/3sum/", "difficulty": "Medium", "isPremium": false }, { "title": "4Sum", "titleSlug": "4sum", "url": "https://leetcode.com/problems/4sum/", "difficulty": "Medium", "isPremium": false } ], "officialSolution": { "available": true, "isFree": true, "hasVideo": true }, "solutionsUrl": "https://leetcode.com/problems/two-sum/solutions/" }