crawlbaseДокументация
Войти
Тело ноутбука отдаётся в iframe

Kaggle отрисовывает выполненный ноутбук - ячейки, вывод и графики - внутри iframe, а не в самой странице, поэтому он не входит в этот ответ. contentUrl возвращает адрес этого фрейма; запросите его отдельным вторым запросом, когда вам нужен отрендеренный ноутбук. URL содержит короткоживущий подписанный токен, поэтому запрашивайте его вскоре после скрапинга, а не сохраняйте.

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

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

curl 'https://api.crawlbase.com/?token=YOUR_TOKEN' \
  --data-urlencode 'url=https://www.kaggle.com/code/alexisbcook/titanic-tutorial' \
  --data-urlencode 'scraper=kaggle-notebook' -G
from crawlbase import CrawlingAPI

api = CrawlingAPI({'token': 'YOUR_TOKEN'})
res = api.get(
    'https://www.kaggle.com/code/alexisbcook/titanic-tutorial',
    {'scraper': 'kaggle-notebook'}
)

import json
data = json.loads(res['body'])
const { CrawlingAPI } = require('crawlbase');
const api = new CrawlingAPI({ token: 'YOUR_TOKEN' });

const res = await api.get(
  'https://www.kaggle.com/code/alexisbcook/titanic-tutorial',
  { scraper: 'kaggle-notebook' }
);
const data = JSON.parse(res.body);
require 'crawlbase'
api = Crawlbase::API.new(token: 'YOUR_TOKEN')

res = api.get('https://www.kaggle.com/code/alexisbcook/titanic-tutorial', scraper: 'kaggle-notebook')
data = JSON.parse(res.body)

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

В параметре url работает любая страница ноутбука Kaggle - страница по адресу /code/<author>/<notebook>. Например:

https://www.kaggle.com/code/alexisbcook/titanic-tutorial
https://www.kaggle.com/code/startupsci/titanic-data-science-solutions
https://www.kaggle.com/code/ldfreeman3/a-data-science-framework-to-achieve-99-accuracy

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

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

url
string
URL страницы ноутбука, которая была обработана.
slug
string | null
Идентификатор ноутбука в виде author/notebook, прочитанный из пути URL.
title
string | null
Отображаемый заголовок ноутбука.
author
object
Аккаунт, которому принадлежит ноутбук.
author.username
string | null
Хэндл владельца.
author.name
string | null
Отображаемое имя владельца.
author.url
string | null
Абсолютный URL профиля владельца.
publishedAt
string | null
Временная метка первой публикации в формате ISO 8601.
lastUpdated
string | null
Временная метка последней версии в формате ISO 8601.
thumbnail
string | null
URL изображения карточки ноутбука.
language
string | null
Язык ноутбука (например, Python или R).
runtime
string | null
Время выполнения последнего запуска в том виде, как оно отображается, вместе с единицами измерения (например, 16s).
version
integer | null
Номер версии, отображаемой сейчас.
versionCount
integer | null
Общее количество опубликованных версий.
views
integer | null
Общее количество просмотров страницы.
votes
integer | null
Количество апвоутов.
copies
integer | null
Сколько раз ноутбук был скопирован или форкнут.
commentCount
integer | null
Количество комментариев к ноутбуку.
medal
string | null
Медаль Kaggle у ноутбука (например, gold), или null, если её нет.
license
object
Лицензия, под которой опубликован ноутбук.
license.name
string | null
Отображаемое название лицензии (например, Apache 2.0).
license.url
string | null
Канонический URL текста лицензии.
inputs
array
Соревнования, датасеты и другие ноутбуки, прикреплённые в качестве входных данных.
inputs[].category
string | null
Заголовок группы входных данных в том виде, как его обозначает Kaggle (например, COMPETITIONS).
inputs[].title
string | null
Отображаемое название прикреплённых входных данных.
contentUrl
string | null
Адрес iframe, содержащего отрендеренное тело ноутбука. Содержит короткоживущий подписанный токен.

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

{
  "url": "https://www.kaggle.com/code/alexisbcook/titanic-tutorial",
  "slug": "alexisbcook/titanic-tutorial",
  "title": "Titanic Tutorial",
  "author": {
    "username": "alexisbcook",
    "name": "Alexis Cook",
    "url": "https://www.kaggle.com/alexisbcook"
  },
  "publishedAt": "2022-06-24T00:25:16.1066667Z",
  "lastUpdated": "2022-06-24T00:25:16.1066667Z",
  "thumbnail": "https://storage.googleapis.com/kaggle-avatars/thumbnails/2603295-kg.jpg",
  "language": "Python",
  "runtime": "16s",
  "version": 22,
  "versionCount": 22,
  "views": 3265744,
  "votes": 60135,
  "copies": 51320,
  "commentCount": 30626,
  "medal": "gold",
  "license": {
    "name": "Apache 2.0",
    "url": "http://www.apache.org/licenses/LICENSE-2.0"
  },
  "inputs": [
    {
      "category": "COMPETITIONS",
      "title": "Titanic - Machine Learning from Disaster"
    }
  ],
  "contentUrl": "https://www.kaggleusercontent.com/kf/99170538//__results__.html"
}