crawlbaseДокументация
Войти
Чего страница списка не раскрывает

Kaggle обозначает общее число результатов только как Results (100+), поэтому totalCountLabel возвращается дословно в виде строки, а не преобразуется в число. Строки с несколькими авторами отрисовываются стопкой аватаров без URL изображения в документе, поэтому author.image у таких строк пуст. Ноутбук, прикреплённый к нескольким соревнованиям, показывает первое из них плюс бейдж +2 - остальных названий на странице нет, поэтому доступен только additionalContextCount.

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

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

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

api = CrawlingAPI({'token': 'YOUR_TOKEN'})
res = api.get(
    'https://www.kaggle.com/code?searchQuery=titanic',
    {'scraper': 'kaggle-notebook-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://www.kaggle.com/code?searchQuery=titanic',
  { scraper: 'kaggle-notebook-serp' }
);
const data = JSON.parse(res.body);
require 'crawlbase'
api = Crawlbase::API.new(token: 'YOUR_TOKEN')

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

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

В параметре url работает любая страница поиска или списка ноутбуков Kaggle - страница по адресу /code, со строкой запроса или без неё. Например:

https://www.kaggle.com/code?searchQuery=titanic
https://www.kaggle.com/code?searchQuery=xgboost&language=Python
https://www.kaggle.com/code
https://www.kaggle.com/code?searchQuery=nlp&page=2

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

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

url
string
URL страницы поиска, которая была обработана.
query
string | null
Поисковый запрос, прочитанный из URL запроса. На этой странице Kaggle оставляет отрендеренное поле поиска пустым, поэтому URL - единственный источник.
totalCountLabel
string | null
Общее число результатов ровно в том виде, как его обозначает Kaggle, например 100+. Возвращается в виде строки, потому что страница не указывает точное число.
page
integer | null
Номер текущей страницы, или null, если его не удалось определить.
hasNextPage
boolean
Доступна ли следующая страница результатов.
resultCount
integer
Количество строк, возвращённых на этой странице.
results
array
Строки ноутбуков в том порядке, в каком они идут на странице.
results[].position
integer
Позиция строки на этой странице, начиная с единицы.
results[].title
string | null
Отображаемый заголовок ноутбука.
results[].url
string | null
Абсолютный URL ноутбука.
results[].slug
string | null
Идентификатор ноутбука в виде author/notebook, прочитанный из пути URL.
results[].author
object
Аккаунт, которому принадлежит ноутбук.
results[].author.username
string | null
Хэндл владельца, взятый из первого сегмента пути URL ноутбука, чтобы он определялся и для строк с соавторами.
results[].author.name
string | null
Отображаемое имя владельца.
results[].author.url
string | null
Абсолютный URL профиля владельца.
results[].author.image
string | null
URL аватара владельца. Пуст для строк с соавторами, где Kaggle отрисовывает стопку аватаров без URL в документе.
results[].coauthors
array
Отображаемые имена дополнительных авторов, в виде массива строк. Пусто для ноутбуков с одним автором.
results[].lastUpdated
string | null
Абсолютная временная метка последнего обновления ноутбука. Карточка показывает только относительный возраст, поэтому значение берётся из всплывающей подсказки за ней и сохраняет форматирование Kaggle, а не ISO 8601.
results[].commentCount
integer | null
Количество комментариев к ноутбуку.
results[].context
string | null
Название соревнования или датасета, к которому прикреплён ноутбук.
results[].additionalContextCount
integer
Ко скольким ещё соревнованиям или датасетам прикреплён ноутбук помимо context. Их названий на странице нет, поэтому доступно только количество.
results[].votes
integer | null
Количество апвоутов ноутбука.
results[].medal
string | null
Медаль Kaggle у ноутбука (например, gold), или null, если у строки её нет.

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

{
  "url": "https://www.kaggle.com/code?searchQuery=titanic",
  "query": "titanic",
  "totalCountLabel": "100+",
  "page": 1,
  "hasNextPage": true,
  "resultCount": 20,
  "results": [
    {
      "position": 1,
      "title": "Titanic Tutorial",
      "url": "https://www.kaggle.com/code/alexisbcook/titanic-tutorial",
      "slug": "alexisbcook/titanic-tutorial",
      "author": {
        "username": "alexisbcook",
        "name": "Alexis Cook",
        "url": "https://www.kaggle.com/alexisbcook",
        "image": "https://storage.googleapis.com/kaggle-avatars/thumbnails/2603295-kg.jpg"
      },
      "coauthors": [],
      "lastUpdated": "Fri Jun 24 2022 00:25:16 GMT+0000 (Coordinated Universal Time)",
      "commentCount": 30626,
      "context": "Titanic - Machine Learning from Disaster",
      "additionalContextCount": 0,
      "votes": 60135,
      "medal": "gold"
    },
    {
      "position": 3,
      "title": "Spaceship Titanic with TFDF",
      "url": "https://www.kaggle.com/code/gusthema/spaceship-titanic-with-tfdf",
      "slug": "gusthema/spaceship-titanic-with-tfdf",
      "author": {
        "username": "gusthema",
        "name": "Gusthema",
        "url": "https://www.kaggle.com/gusthema",
        "image": ""
      },
      "coauthors": [
        "Nidhin PD"
      ],
      "lastUpdated": "Mon Apr 17 2023 09:36:29 GMT+0000 (Coordinated Universal Time)",
      "commentCount": 378,
      "context": "Spaceship Titanic",
      "additionalContextCount": 0,
      "votes": 7863,
      "medal": "gold"
    },
    {
      "position": 10,
      "title": "Titanic Top Solution",
      "url": "https://www.kaggle.com/code/brendan45774/titanic-top-solution",
      "slug": "brendan45774/titanic-top-solution",
      "author": {
        "username": "brendan45774",
        "name": "Brenda N",
        "url": "https://www.kaggle.com/brendan45774",
        "image": "https://storage.googleapis.com/kaggle-avatars/thumbnails/2681031-kg.jpg"
      },
      "coauthors": [],
      "lastUpdated": "Wed Sep 01 2021 16:03:11 GMT+0000 (Coordinated Universal Time)",
      "commentCount": 249,
      "context": "Titanic - Machine Learning from Disaster",
      "additionalContextCount": 2,
      "votes": 2294,
      "medal": "gold"
    }
  ]
}