crawlbaseДокументация
Войти

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

Добавьте &scraper=github-serp к запросу Crawling API. URL-кодируйте целевой URL в параметре url. Один запрос возвращает одну страницу; переходите по pagination.next_page_url, чтобы двигаться дальше, вплоть до лимита GitHub в 1000 результатов.

curl 'https://api.crawlbase.com/?token=YOUR_TOKEN' \
  --data-urlencode 'url=https://github.com/search?q=web+scraping&type=repositories' \
  --data-urlencode 'scraper=github-serp' -G
from crawlbase import CrawlingAPI

api = CrawlingAPI({'token': 'YOUR_TOKEN'})
res = api.get(
    'https://github.com/search?q=web+scraping&type=repositories',
    {'scraper': 'github-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://github.com/search?q=web+scraping&type=repositories',
  { scraper: 'github-serp' }
);
const data = JSON.parse(res.body);
require 'crawlbase'
api = Crawlbase::API.new(token: 'YOUR_TOKEN')

res = api.get('https://github.com/search?q=web+scraping&type=repositories', scraper: 'github-serp')
data = JSON.parse(res.body)

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

URL, передаваемый в параметре url (URL-декодированный для удобства чтения):

https://github.com/search?q=web+scraping&type=repositories

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

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

query
string | null
Поисковый запрос, по которому получены эти результаты.
searchType
string | null
Тип поиска, например repositories.
sort
string | null
Поле сортировки, например stars. Отсутствует при сортировке по наилучшему совпадению.
order
string | null
Направление сортировки, desc или asc.
totalResults
integer | null
Заявленное общее количество результатов по всем страницам.
currentPage
integer
Номер текущей страницы.
pagination
object
Информация о пагинации для обхода набора результатов.
pagination.current_page
integer
Номер текущей страницы.
pagination.total_pages
integer | null
Наибольший номер страницы, который GitHub раскрывает для этого запроса.
pagination.next_page_url
string | null
Абсолютный URL следующей страницы или null на последней странице / при достижении лимита результатов.
pagination.previous_page_url
string | null
Абсолютный URL предыдущей страницы или null на первой странице.
pagination.has_next
boolean
True, пока существует следующая страница в пределах лимита в 1000 результатов.
results
array
Результаты по каждому репозиторию (см. поля ниже).
results[].position
integer
Позиция результата на этой странице (начиная с 1).
results[].name
string | null
Название репозитория.
results[].owner
string | null
Логин владельца (пользователя или организации).
results[].fullName
string
Полный идентификатор owner/name.
results[].url
string
Абсолютный URL репозитория.
results[].description
string | null
Описание репозитория.
results[].primaryLanguage
string | null
Основной язык программирования.
results[].stars
integer | null
Количество звёзд.
results[].topics
array
Метки тем, показанные на карточке результата.
results[].updatedAt
string | null
Отметка времени последнего обновления или относительная метка, если присутствует.
results[].license
string | null
Лицензия, показанная на карточке результата, если присутствует.
results[].archived
boolean
True, если репозиторий является публичным архивом.
results[].sponsorable
boolean
True, если владельца можно спонсировать.

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

{
  "query": "web scraping",
  "searchType": "repositories",
  "sort": "stars",
  "order": "desc",
  "totalResults": 133816,
  "currentPage": 1,
  "pagination": {
    "current_page": 1,
    "total_pages": 100,
    "next_page_url": "https://github.com/search?q=web+scraping&type=repositories&s=stars&o=desc&p=2",
    "previous_page_url": null,
    "has_next": true
  },
  "results": [
    {
      "position": 1,
      "name": "scrapy",
      "owner": "scrapy",
      "fullName": "scrapy/scrapy",
      "url": "https://github.com/scrapy/scrapy",
      "description": "Scrapy, a fast high-level web crawling & scraping framework for Python.",
      "primaryLanguage": "Python",
      "stars": 63119,
      "topics": ["python", "crawler", "framework", "scraping", "crawling"],
      "updatedAt": null,
      "license": null,
      "archived": false,
      "sponsorable": false
    }
  ]
}