Crawling API / LeetCode

Скрапер LeetCode.
Задачи и решения, полностью отрендеренные.

Отправьте любой URL LeetCode и получите обратно полностью отрендеренный HTML через резидентные прокси со встроенной обработкой анти-бот-защиты.
Или получите структурированный JSON со скраперами leetcode-serp, leetcode-problem, leetcode-solutions и leetcode-solution.

99% успешных запросов140M резидентных IP30 регионов
URL LeetCodeHTML or JSONleetcode.com/problems/two-sum/CrawlbaseМаршрутизацияРендерингИзвлечениеОтрендеренный HTMLСписок задачЗадачаРешенияРешениеcrawling-apileetcode-serpleetcode-problemleetcode-solutionsleetcode-solutionleetcode.com · рендеринг + парсинг · 200
Живой поток краулинга · LeetCode1.24M req/minСтриминг
200leetcode.com/problems/longest-substring-without-repeating-characters/ES174ms
200leetcode.com/problems/two-sum/solutions/IN183ms
200leetcode.com/problems/median-of-two-sorted-arrays/CA216ms
200leetcode.com/problems/median-of-two-sorted-arrays/FR81ms
404leetcode.com/problems/median-of-two-sorted-arrays/NL156ms
200leetcode.com/problems/longest-substring-without-repeating-characters/NL94ms
200leetcode.com/problemset/?status=NOT_STARTEDAU83ms
200leetcode.com/problems/two-sum/solutions/NL166ms
200leetcode.com/problems/median-of-two-sorted-arrays/AU82ms
200leetcode.com/problems/median-of-two-sorted-arrays/AU74ms
200leetcode.com/problems/longest-substring-without-repeating-characters/SG214ms
200leetcode.com/problemset/?difficulty=EASYFR170ms
301leetcode.com/problems/two-sum/solutions/CA214ms
200leetcode.com/problems/climbing-stairs/solutions/NL46ms
200leetcode.com/problems/longest-substring-without-repeating-characters/BR162ms
200leetcode.com/problemset/?difficulty=EASYBR119ms
200leetcode.com/problems/best-time-to-buy-and-sell-stock/AU218ms
200leetcode.com/problemset/?difficulty=EASYES144ms
200leetcode.com/problems/longest-substring-without-repeating-characters/IN151ms
200leetcode.com/problems/two-sum/solutions/AU41ms
200leetcode.com/problems/3sum/NL147ms
200leetcode.com/problems/two-sum/solutions/BR157ms
301leetcode.com/problems/two-sum/solutions/3619262/3-methods-c-java-python-beginner-friendl-x595IN134ms
200leetcode.com/problems/climbing-stairs/solutions/DE45ms
200leetcode.com/problems/3sum/NL84ms
200leetcode.com/problems/3sum/JP52ms
200leetcode.com/problems/longest-substring-without-repeating-characters/ES174ms
200leetcode.com/problems/two-sum/solutions/IN183ms
200leetcode.com/problems/median-of-two-sorted-arrays/CA216ms
200leetcode.com/problems/median-of-two-sorted-arrays/FR81ms
404leetcode.com/problems/median-of-two-sorted-arrays/NL156ms
200leetcode.com/problems/longest-substring-without-repeating-characters/NL94ms
200leetcode.com/problemset/?status=NOT_STARTEDAU83ms
200leetcode.com/problems/two-sum/solutions/NL166ms
200leetcode.com/problems/median-of-two-sorted-arrays/AU82ms
200leetcode.com/problems/median-of-two-sorted-arrays/AU74ms
200leetcode.com/problems/longest-substring-without-repeating-characters/SG214ms
200leetcode.com/problemset/?difficulty=EASYFR170ms
301leetcode.com/problems/two-sum/solutions/CA214ms
200leetcode.com/problems/climbing-stairs/solutions/NL46ms
200leetcode.com/problems/longest-substring-without-repeating-characters/BR162ms
200leetcode.com/problemset/?difficulty=EASYBR119ms
200leetcode.com/problems/best-time-to-buy-and-sell-stock/AU218ms
200leetcode.com/problemset/?difficulty=EASYES144ms
200leetcode.com/problems/longest-substring-without-repeating-characters/IN151ms
200leetcode.com/problems/two-sum/solutions/AU41ms
200leetcode.com/problems/3sum/NL147ms
200leetcode.com/problems/two-sum/solutions/BR157ms
301leetcode.com/problems/two-sum/solutions/3619262/3-methods-c-java-python-beginner-friendl-x595IN134ms
200leetcode.com/problems/climbing-stairs/solutions/DE45ms
200leetcode.com/problems/3sum/NL84ms
200leetcode.com/problems/3sum/JP52ms
01 Живое демо

Четыре скрапера LeetCode. Чистый JSON от каждого.

Четыре скрапера LeetCode, вводятся вживую. leetcode-solution берёт один разбор от сообщества с его блоками кода, leetcode-serp читает список задач, leetcode-problem возвращает отдельную задачу с её условием и стартовым кодом, а leetcode-solutions читает вкладку решений. Переключайте вкладки или наведите, чтобы приостановить и прочитать.

готово
клавиши 1-4 переключают · клик для паузызапустите свой URL
Запустите первый запрос за минуты. До 20 000 бесплатных запросов, без кредитной карты.Начать бесплатно
02 Возможности

Один API, каждый уголок LeetCode.

Четыре специализированных скрапера покрывают важные страницы: список задач, отдельные задачи, вкладки решений и отдельные разборы. Crawling API рендерит каждую страницу в реальном браузере, достигает её через резидентные IP и выдаёт вам чистый HTML или JSON.

список задач

Весь каталог

leetcode-serp превращает страницу списка задач в JSON: totalProblems и problemCount, плюс каждая строка с её id, title, titleSlug, url, сложностью, процентом принятых решений, флагом premium и флагом ежедневного испытания.

задачи

Условия и стартовый код

leetcode-problem возвращает одну задачу с её условием в виде HTML и обычного текста, сложностью, категорией, тематическими тегами, подсказками, примерами тестов, стартовым сниппетом для каждого языка, который поддерживает LeetCode, похожими задачами и её счётчиками лайков, дизлайков и отправок.

решения

Вкладка решений

leetcode-solutions возвращает вкладку решений в JSON, каждый пост с его id, title, url, именем и юзернеймом автора, датой публикации, тегами, голосами, просмотрами и числом комментариев.

разборы

Отдельные решения

Добавьте scraper=leetcode-solution чтобы вернуть один разбор с его автором, датой публикации, тегами, счётчиками вовлечённости, телом в виде HTML и обычного текста и каждым отрендеренным блоком кода с его языком.

прокси

140M резидентных IP

Каждый запрос ротирует резидентный IP по 30 регионам и преодолевает проверки бота автоматически. Ничего не нужно решать, ничего не нужно поддерживать.

один токен

Один API для каждой страницы

Crawling API работает с любым URL, поэтому один и тот же токен покрывает каждую задачу и решение LeetCode и всё остальное, что вы краулите. Смотреть живое демо.

03 Вывод

Каждое поле задачи как чистый JSON.

Отправьте URL задачи с scraper=leetcode-problem и задача возвращается типизированным JSON, включая тематические теги и стартовый код. Замените на leetcode-serp, leetcode-solutions или leetcode-solution для списка задач и разборов от сообщества.

{ "url": "https://leetcode.com/problems/two-sum/", "id": "1", "title": "Two Sum", "titleSlug": "two-sum", "difficulty": "Easy", "category": "Algorithms", "isPremium": false, "description": "You are given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.", "descriptionHtml": "<p>You are given an array of integers <code>nums</code>&nbsp;and an integer <code>target</code>...", "hints": [ "A really brute force way would be to search for all possible pairs of numbers...", "..." ], "topicTags": [ { "name": "Array", "slug": "array" }, { "name": "Hash Table", "slug": "hash-table" } ], "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]:" } ], "likes": 69478, "dislikes": 2592, "commentCount": 3490, "acceptedCount": 22929319, "submissionCount": 39569455, "acceptanceRate": "57.9%", "similarQuestions": [ { "title": "3Sum", "titleSlug": "3sum", "difficulty": "Medium" } ], "officialSolution": { "available": true, "isFree": true, "hasVideo": true }, "solutionsUrl": "https://leetcode.com/problems/two-sum/solutions/" }

Задача

url · string  id · string  title · string  titleSlug · string

Условие

description · string  descriptionHtml · string  hints · array  exampleTestcases · array

Темы и код

topicTags[].name · string  topicTags[].slug · string  codeSnippets[].languageSlug · string  codeSnippets[].code · string

Вовлечённость

likes · number  dislikes · number  submissionCount · number  acceptanceRate · string

Похожие

similarQuestions[] · array  officialSolution.available · boolean  officialSolution.hasVideo · boolean  solutionsUrl · string

04 Как это работает

От URL до данных за один вызов.

Каждый запрос к LeetCode проходит один и тот же путь. Вы отправляете URL, мы управляем всем остальным.

01

Отправьте URL

Передайте любой публичный URL LeetCode с вашим токеном: список задач, задачу, вкладку решений или отдельный разбор.

02

Ротируйте прокси

Резидентный IP и регион, которые чисто достигают сайта, из 140M IP по 30 регионам.

03

Отрендерьте страницу

Реальный браузер загружает страницу, чтобы таблица задач, панель условия и тело решения отрендерились до захвата.

04

Преодолейте анти-бот

Проверки бота и лимиты частоты сайта обрабатываются автоматически. Ничего не нужно решать, ничего не нужно поддерживать.

05

Верните HTML или JSON

Возвращается полностью отрендеренный HTML или типизированный JSON, когда вы добавляете leetcode-serp, leetcode-problem, leetcode-solutions или leetcode-solution.

05 Сценарии использования

Что команды строят на данных LeetCode.

USE / 01Каталог

Индексация списка задач

Проходите список задач страница за страницей, чтобы построить поисковый индекс каждой задачи с её id, slug, сложностью, процентом принятых решений и флагом premium.

USE / 02Обучение

Инструменты подготовки к собеседованиям

Извлекайте условия, подсказки, примеры тестов и стартовые сниппеты, чтобы питать приложения для практики, колоды интервальных повторений и внутренние программы подготовки.

USE / 03Бенчмарки

Оценка моделей и агентов

Собирайте условия задач с их примерами тестов и эталонными разборами как оценочный набор бенчмарков для моделей генерации кода.

USE / 04Исследования

Анализ решений и паттернов

Собирайте вкладки решений и отдельные разборы, чтобы увидеть, к каким подходам, языкам и структурам данных сообщество реально сходится.

USE / 05Рейтинги

Отслеживание сложности и популярности

Отслеживайте проценты принятых решений, лайки, дизлайки, число отправок, голоса и просмотры во времени, чтобы видеть, какие задачи и разборы набирают популярность.

USE / 06Охват

Любой URL, один API

Краульте список задач, задачи, вкладки решений и отдельные разборы, плюс любой другой сайт, который вам нужен.

06 Заметки

Полезно знать при скрапинге LeetCode.

HTML по умолчанию, JSON по запросу

Вы получаете полностью отрендеренный HTML. Добавьте scraper=leetcode-serp, leetcode-problem, leetcode-solutions или leetcode-solution для распарсенного JSON или парсите HTML сами.

Ежедневное испытание - это лишняя строка

LeetCode закрепляет ежедневное испытание над таблицей, поэтому полная страница возвращается на одну строку больше размера страницы. Это единственная строка, где isDailyQuestion равен true, поэтому фильтруйте по этому флагу, а не по позиции.

Premium-задачи возвращают только метаданные

Premium-задача сохраняет свои идентификационные поля, isPremium и тематические теги, но условие и счётчики находятся за пейволом и возвращаются пустыми. Проверяйте isPremium, прежде чем считать пустой description ошибкой парсинга.

Счётчики приходят как отображаются

LeetCode сокращает на странице всё, что больше тысячи, поэтому 11.9K разворачивается обратно в 11900. Значение несёт точность страницы, а не точную цифру.

07 Почему Crawlbase

Создано для краулинга LeetCode в масштабе.

Crawling API работает на той же сети, что обслуживает более 46 000 платящих клиентов и 70 000 разработчиков. Никаких прокси для покупки, никаких браузеров для запуска, ничего не нужно патчить, когда сайт меняется.

99%
Средний процент успешных запросов
140M
Резидентных IP, плюс 98M датацентровых
30
Регионов для точных локальных результатов
20/s
Запросов в секунду по умолчанию, больше по запросу

Один токен, официальные SDK для Python, Node и Ruby и сеть с аптаймом 99,99% под капотом.

08 FAQ

Вопросы о скрапинге LeetCode.

Отправьте любой URL LeetCode в Crawlbase Crawling API с вашим токеном. Crawlbase ротирует резидентный прокси, рендерит страницу в реальном браузере, преодолевает проверки бота и возвращает полностью отрендеренный HTML. Добавьте специализированный скрапер (scraper=leetcode-serp, leetcode-problem, leetcode-solutions или leetcode-solution), чтобы вместо этого получить структурированный JSON.
Да. По умолчанию Crawling API возвращает отрендеренный HTML; добавьте специализированный скрапер, чтобы получить структурированный JSON: leetcode-serp для списка задач, leetcode-problem для отдельной задачи, leetcode-solutions для вкладки решений и leetcode-solution для отдельного разбора.
Страницы списка задач и перечней задач, страницы отдельных задач, вкладка решений задачи и страницы отдельных решений на leetcode.com. Тот же API работает и на любом другом сайте.
Crawlbase маршрутизирует каждый запрос через ротирующиеся резидентные IP по 30 регионам и преодолевает проверки бота автоматически, поэтому доступ остаётся стабильным, и нечего поддерживать, когда сайт меняет свою конфигурацию.
leetcode-serp возвращает страницу списка задач с totalProblems, problemCount и строкой на каждую задачу. leetcode-problem возвращает одну задачу с её условием, тематическими тегами, подсказками, примерами тестов, стартовыми сниппетами и счётчиками. leetcode-solutions возвращает вкладку решений с автором, тегами и счётчиками вовлечённости для каждого поста. leetcode-solution возвращает отдельный разбор с его телом и каждым отрендеренным блоком кода.
Скрапер leetcode-solution возвращает codeBlocks, каждый с его языком и полным исходным кодом, вместе с телом разбора в виде HTML и обычного текста. Возвращаются только блоки, отрендеренные в отданной разметке; пост, который подгружает дополнительные языковые вкладки по клику, отдаёт лишь тот блок, что пришёл вместе со страницей.
Начните бесплатно с 20 000 запросов и без кредитной карты. Платные планы масштабируются с использованием, и тот же токен работает во всех Crawling API и каждом скрапере Crawlbase.

Начните скрапить LeetCode.
Забудьте о прокси и лимитах частоты.

Бесплатно для старта с 20 000 запросов. Один токен для Crawling API и каждого скрапера.