Kaggle Notebook Search
Разбирайте страницу поиска или списка ноутбуков Kaggle в структурированный JSON с одной строкой на ноутбук, включая автора, соавторов, контекст соревнования, голоса и количество комментариев.
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' -Gfrom 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, если исходная страница не содержит значения.
100+. Возвращается в виде строки, потому что страница не указывает точное число.author/notebook, прочитанный из пути URL.context. Их названий на странице нет, поэтому доступно только количество.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"
}
]
}