Прежде чем считать обсуждения, решите, что считать репликацией
Разберите replication в r/science на небольшом архивном материале. Запишите условия поиска, полученные записи и собственные решения об их смысле.
Получить API-ключ
Пример запроса
cURL
curl --fail-with-body -H "Authorization: Bearer YOUR_API_KEY" "https://api.redditapilabs.com/v1/search?q=replication&subreddit=science&limit=3"Совпадение слова ещё требует интерпретации
Для инженера-исследователя вопрос о репликации начинается с различения смыслов: запись может обсуждать повторение научного эксперимента, репликацию ДНК или не давать достаточного контекста. Reddit API Labs предоставляет чтение независимого исторического архива Reddit, без официальной связи с Reddit и обновлений в реальном времени. Архив даёт материал для такого решения, но не выполняет научную классификацию. Сформулируйте вопрос, на который позволяют ответить именно полученные записи.
Присвойте каждой попытке сбора собственный локальный идентификатор и запишите маршрут, фильтры, размер страницы, её номер и время получения. Идентификатор принадлежит вашему протоколу, а не является выданным архивом токеном снимка. Отделяйте фактический ответ от очищенного текста, исключений и разметки. Набор параметров описывает попытку отбора, но не заменяет полученные записи при объяснении входных данных анализа другим исследователям.
Первая страница как материал для пилота
Используйте GET https://api.redditapilabs.com/v1/search?q=replication&subreddit=science&limit=3. Здесь q=replication задаёт текстовый поиск, subreddit=science ограничивает сообщество, limit=3 запрашивает не больше трёх записей. Это не отбор достоверных научных работ и не проверка воспроизводимости исследования. Без kind допускаются публикации и комментарии; по умолчанию выбирается первая страница. Передавайте X-API-Key: <ключ> либо Authorization: Bearer <ключ> с сервера. Оба заголовка принимают ключ архива этого домена.
q ищет по title и text. При нескольких словах оператор and требует их присутствия в одном совпавшем поле; слово в заголовке и другое в тексте не обязательно дадут совпадение. Замена replication на replication crisis меняет отбор. Сохраните её как отдельную пробу, а не как доказательство исчезновения всех посторонних значений.
Синтетический фрагмент ответа, только для пояснения: {"data":[],"pagination":{"page":1,"limit":3,"total":0,"relation":"eq"},"credits":{"cost":1,"balance":99}}. Реальный запрос не выполнялся, баланс вымышленный. Пустая первая страница может иметь точный итог ноль для данного запроса и всё равно стоит один кредит. Это не доказывает, что тему replication никогда не обсуждали в science или что все соответствующие записи присутствуют в архиве.
Сохраните основания для включения записей
Сохраните фактический ответ до преобразования полей и отметьте успех, отказ или неопределённый результат попытки. Плоские записи могут не содержать нужных полей; присутствующие parent_id и link_id допускают локальную группировку без полной беседы. Отличайте пропуск от нуля и пустого текста. Протокол должен описывать преобразования вашего кода, не приписывая API собственную очистку, определение тональности или статистическую проверку. Записи science могут отсутствовать или быть недоступными.
Повторная обработка сохранённых ответов и новое обращение к архиву — разные действия. В первом случае используется ваша копия с вашим кодом и зависимостями; во втором выполняется новый запрос без гарантии равенства, сходства или ограниченного масштаба различий. Совпадение хеша локального файла и подробный журнал не доказывают полного охвата или представительности выборки. Они помогают определить конкретный материал и решения, на которых основан ваш результат.
Заранее определите остановку пилота: например, прочитать одну страницу, уточнить правило разметки и лишь затем решить, нужен ли дальнейший сбор. Доступно до 100 записей за запрос и до 100 страниц на запрос с одними условиями. Порядок _doc не означает сортировку по времени, релевантности или оценке; первые три записи не означают три самые важные.
Нужен ли следующему шагу новый запрос
Каждое успешное получение стоит один кредит, включая пустое и повторное: $1 за 1000 запросов. Некорректные запросы не списываются; сбой источника возвращает резерв. Тайм-аут клиента может скрывать оплаченный успех, а успешный повтор стоит ещё один кредит. Ошибка локального преобразования не отменяет оплату. Отмечайте удалённые попытки отдельно от успешной обработки на своей стороне и не сохраняйте секреты в открытом исследовательском журнале.
Если следующий шаг — разметка сохранённого текста, продолжайте локально. Руководство поможет оформить решения о включении, документация — проверить параметры. Для нового обращения используйте страницу ключа, а для расчёта затрат — цены. Число запросов и подробность журнала сами по себе не делают неполный архивный материал репрезентативной выборкой.