Разработчики
Скраперы для платформ разработчиков. Направьте их на URL GitHub, Stack Overflow или Exercism и получите чистый структурированный JSON - метаданные репозитория, результаты поиска, профили, ветки вопросов и ответов или решения учебных упражнений - вместо HTML.
Обзор
Категория «Разработчики» охватывает платформы, из которых инженерные команды извлекают данные для open source-разведки, анализа зависимостей и экосистемы, исследований developer relations, сигналов найма/сорсинга и добычи технических вопросов и ответов. Каждый скрапер принимает целевой URL, возвращает разобранный JSON за миллисекунды и опирается на те же резидентные прокси и обход анти-бота, что питают Crawling API - тот же SLA доступности, та же аутентификация одним токеном, без настройки для каждой цели.
Основной набор нацелен на GitHub, крупнейший хостинг публичного исходного кода. Выбирайте скрапер по нужной вам поверхности: отдельная страница репозитория, страница результатов поиска репозиториев (SERP) или профиль пользователя/организации. Каждый скрапер нацелен на один тип страницы, поэтому структура JSON остаётся стабильной даже при изменении лежащего в основе HTML - и вы платите только за успешные ответы, так что повторные попытки к нестабильному источнику не появятся в вашем счёте.
Stack Overflow тоже охвачен. Он входит в сеть Stack Exchange, поэтому его обрабатывают те же два независимых от хоста скрапера - отдельного скрапера Stack Overflow изучать не нужно. Направьте stackexchange-serp на список вопросов, тег или страницу поиска (например, https://stackoverflow.com/questions/tagged/python) для получения структурированного массива вопросов со счётом, числом ответов и просмотров, и тегами; направьте stackexchange-thread на отдельный вопрос (например, https://stackoverflow.com/questions/11227809/why-is-processing-a-sorted-array-faster-than-processing-an-unsorted-array) для получения полного текста плюс каждого ответа и комментария. Парсер сети обрабатывает разметку независимо от того, находится URL на stackoverflow.com или на любом другом сайте *.stackexchange.com.
Exercism охвачен четырьмя скраперами для платформы учебной практики программирования. Направьте exercism-serp на список упражнений трека (например, https://exercism.org/tracks/ruby/exercises) для получения каждого упражнения с его слагом, сложностью и описанием; exercism-exercise - на отдельное упражнение (например, /tracks/ruby/exercises/two-fer) для получения полных инструкций в виде текста и HTML; exercism-solutions - на сообщества решений упражнения для получения постраничного массива опубликованных решений с автором, языком и количеством звёзд; и exercism-solution - на отдельное опубликованное решение (например, /tracks/ruby/exercises/two-fer/solutions/handle) для получения его итераций, метаданных и исходного кода.
Типичные конвейеры:
- Мониторинг экосистемы: опрашивайте
github-repositoryпо проектам, от которых вы зависите, снимайте снимкиstars,forks,openIssuesCount,latestReleaseиarchivedи оповещайте при Δ. - Обнаружение: подавайте запросы
github-serp(например, поиск по теме или ключевому слову) в список вызововgithub-repository, чтобы обогатить каждый результат полными метаданными. - Сорсинг разработчиков / DevRel: разрешайте
github-profile, чтобы прочитатьfollowers,publicRepos,pinnedReposиorganizations. - Аналитика зависимостей: отслеживайте
primaryLanguage,languages,licenseиtopicsпо портфелю репозиториев, чтобы выявлять риски лицензирования или сопровождения. - Добыча вопросов и ответов: примените
stackexchange-serpк тегу или поиску (например,stackoverflow.com/questions/tagged/python), а затем разветвляйтесь наstackexchange-threadпо каждому вопросу, чтобы захватить принятые ответы, блоки кода и счёт голосов - чистый корпус для автоматизации поддержки или обучения моделей. - Добыча решений: запустите
exercism-serpна треке, разветвитесь наexercism-solutionsпо каждому упражнению, а затем наexercism-solutionпо каждому автору, чтобы собрать размеченный корпус рабочего кода на разных языках для одной и той же задачи.
Каждое поле напрямую отражает то, что рендерит страница, а nullable-поля возвращаются как null, когда исходная страница опускает значение, вместо того чтобы молча исчезать - так ваша схема остаётся предсказуемой от вызова к вызову. Никакого токена API GitHub или Stack Exchange, никакого жонглирования лимитами запросов и никакого учёта пагинации с вашей стороны: скрапер берёт на себя загрузку и разбор, а вы получаете именно те поля, которые вам действительно нужны.
GitHub
Три скрапера, охватывающие поверхности GitHub, которые команды запрашивают чаще всего - отдельную страницу репозитория, результаты поиска репозиториев и профили пользователей или организаций.
- GitHub Repository - страница репозитория (описание, язык, stars, forks, issues, лицензия, последний релиз).
- GitHub SERP - страница результатов поиска репозиториев на GitHub.
- GitHub Profile - профиль пользователя или организации (биография, подписчики, закреплённые репозитории, организации).
Stack Overflow
Stack Overflow обслуживается скраперами Stack Exchange - направляйте их на URL stackoverflow.com. Используйте stackexchange-serp для списков вопросов, страниц тегов и результатов поиска, а stackexchange-thread - для отдельного вопроса с его полной веткой ответов. Оба независимы от хоста в рамках всей сети Stack Exchange, поэтому одна и та же форма вызова работает для любого сайта *.stackexchange.com.
- Stack Overflow Questions - страница вопросов, тегов (например,
/questions/tagged/python) или результатов поиска Stack Overflow в виде структурированного массива со счётом, числом ответов и просмотров, тегами и пагинацией. - Stack Overflow Thread - отдельный вопрос Stack Overflow с его полным текстом плюс каждым ответом и комментарием, со счётом, статусом принятия и авторами.
Exercism
Четыре скрапера, охватывающие платформу учебной практики программирования Exercism - список упражнений трека, отдельное упражнение с его инструкциями, список сообществ решений упражнения и отдельное опубликованное решение. Направляйте их на URL exercism.org; слаги трека и упражнения считываются из пути URL.
- Exercism Exercises - страница списка упражнений трека (например,
/tracks/ruby/exercises) в виде структурированного массива упражнений со слагом, заголовком, сложностью и описанием. - Exercism Exercise - страница обзора отдельного упражнения с его заголовком, сложностью и полными инструкциями в виде текста и HTML.
- Exercism Solutions - страница сообществ решений упражнения в виде постраничного массива опубликованных решений с автором, языком, звёздами и числом итераций.
- Exercism Solution - отдельное опубликованное решение сообщества с его итерациями, языком, количеством звёзд и исходным кодом.
Kaggle
Четыре скрапера, охватывающие платформу для дата-сайенса Kaggle - поиск датасетов, отдельный датасет с его файлами и лицензией, поиск ноутбуков и отдельный ноутбук с его метаданными и входными данными. Направляйте их на URL kaggle.com; слаги владельца и датасета или ноутбука считываются из пути URL.
- Kaggle Dataset Search - страница поиска или списка датасетов (например,
/datasets?search=heart+disease) в виде ранжированного массива датасетов с владельцем, размером, оценкой удобства использования, числом загрузок и количеством ноутбуков. - Kaggle Dataset - страница отдельного датасета с его описанием, ключевыми словами, владельцем, лицензией, списком файлов и счётчиками вовлечённости.
- Kaggle Notebook Search - страница поиска или списка ноутбуков (например,
/code?searchQuery=titanic) в виде ранжированного массива ноутбуков с автором, соавторами, контекстом соревнования, голосами и комментариями. - Kaggle Notebook - страница отдельного ноутбука с его автором, языком, временем выполнения, историей версий, счётчиками вовлечённости и прикреплёнными входными данными.
LeetCode
Четыре скрапера, охватывающие платформу для практики программирования LeetCode - список задач, отдельная задача с её условием и заготовками кода, вкладка решений сообщества и отдельная публикация решения. Направляйте их на URL leetcode.com; слаги задачи и публикации считываются из пути URL.
- LeetCode Problem Set - список задач (например,
/problemset/?difficulty=EASY) в виде массива задач с идентификатором, сложностью, процентом принятия и признаком премиум-доступа. - LeetCode Problem - страница отдельной задачи с её условием, сложностью, тематическими тегами, подсказками, заготовками кода и счётчиками вовлечённости.
- LeetCode Solutions - вкладка решений сообщества для задачи в виде массива публикаций с автором, тегами и счётчиками вовлечённости.
- LeetCode Solution - отдельная публикация решения сообщества с её текстом, извлечёнными блоками кода и счётчиками вовлечённости.
Пример вызова
Ниже: один вызов github-repository. Замените YOUR_TOKEN на ваш токен Crawling API; единственные обязательные параметры - целевой URL и имя скрапера.
curl 'https://api.crawlbase.com/?token=YOUR_TOKEN' \
--data-urlencode 'url=https://github.com/rails/rails' \
--data-urlencode 'scraper=github-repository' -G
Пример ответа
{
"name": "rails",
"owner": "rails",
"fullName": "rails/rails",
"url": "https://github.com/rails/rails",
"description": "Ruby on Rails",
"primaryLanguage": "Ruby",
"languages": ["Ruby", "JavaScript", "HTML", "SCSS", "CSS", "Dockerfile"],
"stars": 58789,
"forks": 22414,
"watchers": 2400,
"hasIssues": true,
"openIssuesCount": 478,
"openPrsCount": 1081,
"topics": ["ruby", "rails", "html", "activerecord", "framework", "mvc", "activejob"],
"license": "MIT license",
"defaultBranch": "main",
"latestRelease": "v8.1.3",
"readmePresent": true,
"archived": false
}
Полный справочник (параметры, все 4 языка SDK, крайние случаи): GitHub Repository - полный справочник