Google ежегодно платит $60 миллионов за лицензию на данные Reddit. По слухам, сделка OpenAI оценивается в $70 миллионов. Это многое говорит о том, что скрыто в этих ветках комментариев. Если вы хоть раз пытались вручную собирать обсуждения, комментарии или данные о тональности с Reddit, то знаете, насколько это утомительно: бесконечная прокрутка, копирование и вставка, десятки вкладок.
В прошлом квартале я потратил немало времени, помогая команде Thunderbit разобраться, как именно люди извлекают данные из Reddit в 2025 году. После обновления ценовой политики Reddit API в 2023 году ситуация сильно изменилась, а большинство гайдов в интернете либо уже устарели, либо описывают только один способ. Поэтому я собрал всё, что реально работает прямо сейчас — четыре разных подхода, от полноценного Python-скриптинга до извлечения данных без кода, — чтобы вы могли выбрать вариант под свой уровень и задачу. Хотите собрать датасет для NLP, отслеживать упоминания бренда в сабреддите или просто получить таблицу с популярными постами — этот материал вам пригодится.
## Что такое скрапинг Reddit и зачем он нужен?Скрапинг Reddit — это программное извлечение постов, комментариев, данных пользователей и метаданных со страниц Reddit или через API. Вместо ручного просмотра веток и копирования текста вы используете скрипт или инструмент, чтобы собирать структурированные данные в нужном объёме.
Зачем вообще это делать? На Reddit более 100 000 активных сабреддитов и, по оценкам, публикуется 7,5 миллиона комментариев в день. Здесь люди делятся неприукрашенными мнениями о продуктах, сервисах, конкурентах и трендах — это тот самый живой сигнал, который почти невозможно найти на отполированных сайтах с отзывами или в корпоративных блогах. Google платит примерно $60 миллионов в год за лицензию на контент Reddit, а сделка OpenAI, по сообщениям, составляет $70 миллионов. Если крупнейшие AI-компании мира платят за эти данные девятизначные суммы, стоит разобраться, как получить к ним доступ самостоятельно.
Зачем скрапить Reddit с помощью Python в 2025 году?
Python — стандартный язык для скрапинга Reddit: PRAW, requests, BeautifulSoup и pandas закрывают весь путь от API-запросов до экспорта данных. Но причина использовать Python не сводится только к инструментам.
Вот самые частые сценарии, которые я вижу у бизнес-команд и исследователей:
| Сценарий | Кому полезно | Пример |
|---|---|---|
| Исследование рынка и проверка гипотез | Продакт-менеджеры, фаундеры | Поиск повторяющихся болей в r/SaaS или r/Entrepreneur |
| Анализ тональности | Маркетинг, бренд-команды | Отслеживание того, как люди говорят о вашем продукте и конкурентах |
| Генерация лидов | Отделы продаж | Поиск постов вроде «ищу инструмент, который умеет X» в нишевых сабреддитах |
| Идеи для контента | Контент-маркетологи | Выявление популярных вопросов и тем в r/marketing или r/SEO |
| Академические / NLP-исследования | Исследователи, дата-сайентисты | Создание размеченных датасетов из комментариев для классификации эмоций |
| Конкурентная разведка | Стратегия, операционные команды | Мониторинг сабреддитов конкурентов на предмет повторяющихся жалоб |
По оценкам, аудитория Reddit достигла 1,36 миллиарда ежемесячно активных пользователей в 2025 году, а еженедельная активная аудитория составила 471,6 миллиона уникальных пользователей — рост на 24% год к году. А после августовского core update Google 2024 года контент Reddit стал примерно на 400% заметнее в органической выдаче.
Иными словами: данные, которые вы извлекаете из Reddit, всё чаще совпадают с теми данными, которые Google показывает пользователям в поиске.
Какой способ выбрать для скрапинга Reddit? (Краткое сравнение)
Самый частый вопрос на форумах по скрапингу Reddit звучит буквально так: «Какой метод мне использовать?» Поэтому я собрал эту таблицу. Выбирайте подходящую строку и двигайтесь дальше.
| Критерий | PRAW | .json endpoint | BeautifulSoup (HTML) | Без кода (Thunderbit) |
|---|---|---|---|---|
| Сложность настройки | Средняя (API-приложение + pip install) | Нет (достаточно URL) | Средняя (pip + анализ DOM) | Очень низкая (расширение Chrome) |
| Нужен API-ключ? | Да | Нет | Нет | Нет |
| Скрапинг комментариев | Глубокий (вложенные деревья) | Ограниченный (верхний уровень) | Ручной парсинг | Структурирование AI |
| Пагинация | Встроенная | Ручная (параметр after) | Ручная | Автоматическая |
| Ограничения по частоте | 100 запросов/мин (управляется PRAW) | ~10 запросов/мин (без авторизации) | Риск блокировки IP | Обрабатывается инструментом |
| Лучше всего подходит для | Полноценные проекты, исследования | Быстрые одноразовые выгрузки | Обучения и кастомизации | Не-программисты, быстрый экспорт |
| Варианты экспорта | CSV, JSON (через код) | JSON (сырые данные) | Кастомный (через код) | Excel, Google Sheets, Airtable, Notion |
Если вам нужны полноценные Python-проекты с глубоким извлечением комментариев, начните со способа 1 (PRAW). Нужна быстрая выгрузка в ближайшие 10 минут без подготовки? Попробуйте способ 2 (трюк с .json). Хотите научиться HTML-скрапингу или нужны кастомные поля? Тогда способ 3 (BeautifulSoup). А если вы хотите вообще обойтись без Python и просто получить данные, переходите к способу 4 (Thunderbit).
Что изменилось: обновление цен Reddit API в 2023–2024 годах и что всё ещё доступно бесплатно
Почти ни один гайд по скрапингу не объясняет это — а между тем именно здесь кроется главный контекст для тех, кто сегодня собирает данные с Reddit.
В июне 2023 года Reddit впервые с 2008 года ввёл платные уровни доступа к API. Последствия были серьёзными:
- Pushshift перестал быть доступен для публичного использования. Reddit отозвал доступ Pushshift к API в мае 2023 года. Исследователи, которые на него опирались (Pushshift цитировался более чем в 1 700 научных работах), в одночасье потеряли основной источник данных. Преемник для исторических данных — Arctic Shift, но публичной замены для live API нет.
- Сторонние приложения закрылись. Apollo, Reddit is Fun, Sync, BaconReader и другие прекратили работу к 30 июня 2023 года после того, как Reddit выставил разработчику Apollo цену $20 миллионов в год за API.
- Более 8 500 сабреддитов ушли в офлайн в знак протеста, включая r/funny (40 млн подписчиков), r/gaming и r/science (NPR).
Что всё ещё бесплатно в 2025 году:
Бесплатный OAuth-тариф по-прежнему доступен для некоммерческого, личного и академического использования — 100 запросов в минуту на один OAuth client ID. PRAW отлично работает в рамках этого тарифа для умеренного скрапинга. Неавторизованный доступ (включая .json endpoint) ограничен примерно 10 запросами в минуту.
Практический вывод: для небольших и средних задач бесплатного тарифа более чем достаточно. Для крупномасштабного или коммерческого использования вам придётся либо обратиться в Reddit за enterprise-доступом, либо использовать .json endpoint или BeautifulSoup (они не требуют API-ключей), либо взять инструмент вроде Thunderbit, который вообще не зависит от API Reddit.
Перед началом
- Сложность: от начального до среднего уровня — зависит от метода
- Время: около 15–30 минут для способов 1–3; около 5 минут для способа 4
- Что понадобится:
- Python 3.8+ (для способов 1–3)
- Аккаунт Reddit (для способа 1)
- Браузер Chrome (для способа 4)
- Расширение Thunderbit для Chrome (для способа 4)
Способ 1: как скрапить Reddit с помощью Python и PRAW — пошагово
PRAW (Python Reddit API Wrapper) — самый популярный и лучше всего документированный способ скрапинга Reddit на Python. Он берёт на себя авторизацию, лимиты запросов и пагинацию, а также активно поддерживается: последняя стабильная версия — PRAW 7.8.1 (октябрь 2024), поддерживает Python 3.8–3.13.
Шаг 1. Создайте приложение Reddit и получите API-учётные данные
Перейдите на https://www.reddit.com/prefs/apps и прокрутите страницу вниз. Нажмите "are you a developer? create an app..."
Заполните форму:
- Name: любое понятное имя, например "my-reddit-scraper"
- App type: выберите script
- Redirect URI: укажите
http://localhost:8080(обязательно, но для script-приложений не используется) - Description: по желанию
Нажмите Create app. Вы увидите свои данные:
- client_id — 14-символьная строка прямо под названием приложения (подпись "personal use script")
- client_secret — поле, помеченное как "secret"
Перед завершением создания приложения вам также нужно принять Data API Terms и Responsible Builder Policy.
И ещё важный момент: с конца 2024 года новым разработчикам может понадобиться отправить запрос на доступ и дождаться одобрения. Это главный барьер для тех, кто впервые работает с PRAW, и обойти его нельзя.
Шаг 2. Установите PRAW и создайте объект Reddit
Откройте терминал и выполните:
pip install praw pandas
Затем создайте объект Reddit в режиме только для чтения:
import praw
reddit = praw.Reddit(
client_id="YOUR_CLIENT_ID",
client_secret="YOUR_CLIENT_SECRET",
user_agent="python:reddit-scraper:v1.0 (by u/yourname)",
)
# reddit.read_only по умолчанию True для script-приложений без пароля
Формат user_agent действительно важен. Reddit активно ограничивает слишком общие строки вроде python-requests/2.x. Используйте рекомендованный формат: platform:app_id:version (by u/username).
Шаг 3. Соберите посты из сабреддита
Вот как получить топовые посты из r/python за последний месяц и сохранить их в pandas DataFrame:
import pandas as pd
subreddit = reddit.subreddit("python")
rows = []
for post in subreddit.top(time_filter="month", limit=500):
rows.append({
"id": post.id,
"title": post.title,
"selftext": post.selftext,
"score": post.score,
"upvote_ratio": post.upvote_ratio,
"num_comments": post.num_comments,
"author": str(post.author) if post.author else "[deleted]",
"created_utc": post.created_utc,
"url": post.url,
"permalink": f"https://reddit.com{post.permalink}",
})
df = pd.DataFrame(rows)
print(df.head())
Вы можете заменить .top() на .hot(), .new() или .controversial(), а time_filter принимает значения "all", "day", "hour", "month", "week" или "year".
Небольшое предупреждение: Reddit ограничивает любую ленту примерно 1000 элементами, независимо от того, насколько большое значение вы зададите в limit. Это ограничение на стороне Reddit, а не PRAW.
Шаг 4. Экспортируйте данные Reddit в CSV или Excel
df.to_csv("reddit_python_top.csv", index=False)
df.to_json("reddit_python_top.json", orient="records", lines=True)
PRAW автоматически обрабатывает лимиты: он читает заголовки X-Ratelimit-Remaining и X-Ratelimit-Reset в каждом ответе и при необходимости делает паузы между запросами. Для умеренного скрапинга ручные задержки обычно не нужны.
Как скрапить комментарии Reddit с помощью Python: глубокие вложенные ветки
Именно на комментариях многие и спотыкаются.
Reddit хранит комментарии в виде дерева: у каждого комментария могут быть дочерние ответы, а часть веток скрыта за ссылками "load more comments". В терминологии PRAW такие скрытые ветки представлены объектами MoreComments.
Мысленно это выглядит так:
Submission (t3_abc123)
├── Comment A (top-level)
│ ├── Reply A1
│ │ └── Reply A1a
│ └── Reply A2
├── Comment B (top-level)
│ └── MoreComments (hidden — "load more comments")
└── MoreComments (hidden — "continue this thread")
Используем replace_more(), чтобы получить все скрытые комментарии
Метод replace_more() проходит по дереву комментариев и заменяет каждый плейсхолдер MoreComments реальными комментариями, на которые он указывает:
submission = reddit.submission(id="abcdef")
submission.comments.replace_more(limit=10) # практический предел для больших веток
all_comments = submission.comments.list() # плоский список в ширину
Если указать limit=None, метод заменит каждый узел MoreComments без исключения. Но в ветке с 5000+ комментариями это может занять несколько минут, потому что каждая замена — это отдельный API-запрос, возвращающий максимум около 100 комментариев. Для больших обсуждений я рекомендую начинать с limit=10 или limit=20 и увеличивать значение только если нужна полная выборка.
Преобразуем вложенные комментарии в таблицу
rows = []
for c in all_comments:
rows.append({
"comment_id": c.id,
"parent_id": c.parent_id, # t1_xxx = родительский комментарий, t3_xxx = submission
"depth": c.depth,
"author": str(c.author) if c.author else "[deleted]",
"body": c.body,
"score": c.score,
"created_utc": c.created_utc,
"is_submitter": c.is_submitter,
})
comments_df = pd.DataFrame(rows)
У верхнеуровневых комментариев parent_id начинается с t3_ (fullname submission). Колонка depth показывает, насколько глубоко вложен комментарий — это удобно для фильтрации и визуализации. Есть один нюанс: len(all_comments) обычно не совпадает с submission.num_comments, потому что удалённые, скрытые и отфильтрованные как спам комментарии не попадают в дерево.
Способ 2: трюк с .json endpoint — скрапинг Reddit без API-ключа
Просто добавьте .json к любому URL Reddit. И всё. Вы получаете структурированный JSON — без авторизации, без регистрации приложения и без установки pip-пакетов.
Пример: https://www.reddit.com/r/python/hot.json
Пользователи форумов постоянно упоминают этот способ, но почти ни один туториал его не разбирает.
Рабочий пример кода на Python
import requests
headers = {"User-Agent": "python:reddit-scraper:v1.0 (by /u/yourname)"}
r = requests.get(
"https://www.reddit.com/r/python/hot.json",
headers=headers,
params={"limit": 100},
)
data = r.json()
for post in data["data"]["children"]:
p = post["data"]
print(p["title"], p["score"], p["num_comments"], p["author"])
Заголовок User-Agent критически важен. Reddit блокирует или ограничивает слишком общие user-agent’ы вроде python-requests/2.31.0 — как показал Simon Willison, «это ограничение скорости завязано на user-agent». Используйте такой же описательный формат, как в PRAW.
Как обойти пагинацию с помощью параметра after
По умолчанию .json endpoint возвращает около 25 результатов (максимум 100 за запрос). Чтобы получить больше, используйте курсор after из ответа:
import requests, time
headers = {"User-Agent": "python:reddit-scraper:v1.0 (by /u/yourname)"}
after = None
all_posts = []
for _ in range(10): # до ~1000 постов
r = requests.get(
"https://www.reddit.com/r/python/hot.json",
headers=headers,
params={"limit": 100, "after": after},
)
data = r.json()
all_posts.extend(data["data"]["children"])
after = data["data"].get("after")
if not after:
break
time.sleep(6) # ~10 запросов в минуту = один запрос каждые 6 секунд
Значение after — это токен курсора (формат: t3_xxxxxx). Как и у PRAW, жёсткий предел — около 1000 элементов на все страницы вместе.
Ограничения метода .json
- Нет доступа к глубокому дереву комментариев — вы получите верхний уровень комментариев и один уровень заглушек
more, но не автоматическое раскрытие, как уreplace_more()в PRAW - Только чтение — нельзя голосовать, публиковать или модерировать
- Около 10 запросов в минуту для неавторизованного доступа — слишком активные циклы вызовут ошибки 429
- Тот же лимит в 1000 элементов, что и у авторизованного API
Этот способ лучше всего подходит для быстрых одноразовых выгрузок, прототипов или случаев, когда вы не хотите регистрировать API-приложение.
Способ 3: как скрапить Reddit с помощью BeautifulSoup (HTML-парсинг)
Если вы уже занимались веб-скрапингом, то, скорее всего, знаете BeautifulSoup. В случае Reddit есть важный приём: используйте old.reddit.com вместо нового React-интерфейса. Старая версия рендерится на сервере, она легче и гораздо проще для парсинга — несколько гайдов 2025–2026 годов подтверждают, что она всё ещё доступна и удобна для скрапинга.
Настройка requests и BeautifulSoup
pip install requests beautifulsoup4
import requests
from bs4 import BeautifulSoup
headers = {"User-Agent": "python:reddit-scraper:v1.0 (by /u/yourname)"}
r = requests.get("https://old.reddit.com/r/python/", headers=headers)
soup = BeautifulSoup(r.text, "html.parser")
Извлечение данных о постах из DOM
На old.reddit.com каждый пост находится внутри <div> с классом thing. Самые стабильные селекторы — это атрибуты data-*:
for thing in soup.select("div#siteTable > div.thing"):
title_el = thing.select_one("a.title")
print({
"title": title_el.get_text(strip=True) if title_el else None,
"author": thing.get("data-author"),
"score": thing.get("data-score"),
"comments": thing.get("data-comments-count"),
"domain": thing.get("data-domain"),
"url": title_el.get("href") if title_el else None,
})
Лучше опираться на атрибуты data-*, а не на вложенные селекторы по классам — Reddit много раз менял названия классов, а data-атрибуты формируются шаблоном и меняются редко.
Пагинация на old.reddit.com
import time
url = "https://old.reddit.com/r/python/"
all_rows = []
while url:
r = requests.get(url, headers=headers)
soup = BeautifulSoup(r.text, "html.parser")
for thing in soup.select("div#siteTable > div.thing"):
title_el = thing.select_one("a.title")
all_rows.append({
"title": title_el.get_text(strip=True) if title_el else None,
"author": thing.get("data-author"),
"score": thing.get("data-score"),
"comments": thing.get("data-comments-count"),
"url": title_el.get("href") if title_el else None,
})
nxt = soup.select_one("span.next-button a")
url = nxt["href"] if nxt else None
time.sleep(2) # вежливая пауза
Когда использовать BeautifulSoup вместо PRAW
BeautifulSoup подходит, если вы хотите освоить DOM-скрапинг, не хотите регистрировать OAuth-приложение или вам нужны кастомные поля, которые PRAW не отдаёт. Но он более хрупкий: HTML-структура может измениться без предупреждения, блокировки IP в 2025 году стали жёстче, чем раньше, и всю логику пагинации и обработки ошибок придётся писать вручную. По надёжности и глубине PRAW выигрывает.
Способ 4: как скрапить Reddit без кода с помощью Thunderbit
Признание: многие, кто ищет «how to scrape Reddit with Python», на самом деле не хотят писать Python. Им нужны данные. Если это про вас, этот раздел — ваш запасной выход.
Thunderbit — это AI-расширение для Chrome, которое наша команда создала именно для таких задач: извлечение структурированных данных со страниц без написания кода.
Шаг 1. Установите Thunderbit и откройте страницу Reddit
Установите расширение Thunderbit для Chrome, затем откройте любой сабреддит или страницу поста Reddit, например reddit.com/r/python.
Ни API-ключа, ни Python-среды, ни команд в терминале.
Шаг 2. Нажмите "AI Suggest Fields" и дайте AI прочитать страницу
Нажмите на иконку Thunderbit в панели браузера, затем выберите "AI Suggest Fields." AI Thunderbit проанализирует страницу и автоматически предложит столбцы вроде Post Title, User Name, Upvotes, Comments Count, Date Posted, Post Description, Community Name и Post URL.
Вы можете добавлять, удалять и переименовывать поля по своему усмотрению. Например, если вам нужны только заголовки и рейтинг, просто удалите остальное.
Шаг 3. Нажмите "Scrape" и экспортируйте данные
Нажмите "Scrape", и Thunderbit соберёт данные, автоматически обработав пагинацию. После заполнения таблицы вы можете сразу экспортировать её в Excel, Google Sheets, Airtable или Notion — без кода для CSV.
Для более глубоких данных в Thunderbit есть скрапинг подстраниц: можно открыть отдельные ветки и автоматически обогатить таблицу данными из комментариев. По смыслу это похоже на replace_more() в PRAW, но без единой строки кода.
Бонус: расписание скрапинга для постоянного мониторинга Reddit
Если вам нужно ежедневно отслеживать сабреддит — например, мониторить упоминания бренда в r/SaaS или обсуждения конкурентов в нишевом сообществе — у Thunderbit есть планировщик повторных запусков. Вы описываете интервал обычным языком, например «каждый будний день в 9 утра», а инструмент делает всё остальное и доставляет свежие данные в подключённую таблицу или базу.
Подробнее о возможностях Thunderbit для скрапинга Reddit можно узнать на YouTube-канале Thunderbit.
Советы и лучшие практики для скрапинга Reddit с помощью Python
Большую часть этих правил я усвоил на собственных ошибках — они актуальны независимо от выбранного способа.
Соблюдайте правила Reddit и лимиты запросов
В Data API Terms Reddit прямо запрещает коммерческий скрапинг без письменного согласия — и это относится ко всем способам доступа, не только к API. Для личного, академического и внутреннего исследовательского использования бесплатный OAuth-тариф и сценарии Thunderbit обычно укладываются в рамки разумного использования.
Шпаргалка по лимитам:
| Сценарий | Лимит | Что произойдёт |
|---|---|---|
| Авторизованный доступ (OAuth) | 60–100 запросов/мин | PRAW управляет этим автоматически |
| Неавторизованный доступ (.json, HTML) | ~10–30 запросов/мин | 429 Too Many Requests |
| Обычный User-Agent | Сильно ограничивается | 403 Forbidden или тихая блокировка |
Всегда задавайте описательную строку User-Agent. Это самая частая причина, по которой новички сталкиваются с ошибками 429 или 403.
Храните и структурируйте данные аккуратно
- Используйте DataFrame pandas с явным порядком столбцов для предсказуемого экспорта в CSV/Excel
- Преобразуйте
created_utcв читаемое время:pd.to_datetime(df["created_utc"], unit="s") - Удаляйте дубликаты по
id, если собираете данные из нескольких сортировок (hot,newиtopчасто пересекаются) - Обрабатывайте удалённых авторов:
str(post.author) if post.author else "[deleted]"
Корректно обрабатывайте типовые ошибки
| Ошибка | Причина | Решение |
|---|---|---|
| 429 Too Many Requests | Превышен лимит запросов (60–100 req/min для OAuth) | Используйте экспоненциальную задержку; проверьте заголовок X-Ratelimit-Reset |
| 403 Forbidden | Плохой User-Agent или заблокированный IP | Используйте уникальный, описательный UA; убедитесь, что OAuth-приложение активно |
None author | Удалённый или заблокированный аккаунт | Оборачивайте в if post.author else "[deleted]" |
prawcore.TooManyRequests | Сработал внутренний лимит PRAW | Увеличьте ratelimit_seconds или распределите запросы равномерно |
| 5xx или 413 на больших деревьях | Перегрузка backend Reddit на глубоких ветках | Оберните replace_more() в retry-логику; ограничьте глубину обхода |
Сценарии использования скрапинга Reddit: что можно делать с этими данными?
Скрапинг — это только первый шаг. Вот что действительно даёт результат:
- Отделы продаж: мониторинг r/SaaS, r/smallbusiness или r/Entrepreneur на посты вроде «ищу инструмент, который умеет X». Передавайте найденные совпадения в списки лидов или CRM-воркфлоу. Для ежедневного мониторинга используйте планировщик Thunderbit.
- Маркетинг и контент-команды: отслеживайте упоминания бренда, анализируйте тональность и извлекайте популярные вопросы для идей контента. Совмещайте выгрузки Reddit с Google Sheets для командной работы.
- Ecommerce и операционные команды: отслеживайте обсуждения продуктов конкурентов на предмет повторяющихся жалоб. Сабреддиты вроде r/BuyItForLife и нишевые сообщества — настоящая кладезь обратной связи о продукте.
- Исследователи и аналитики: собирайте NLP-датасеты — в академических статьях 2024 года использовались наборы данных от 37 тыс. комментариев до 54 тыс. комментариев для классификации тональности и эмоций. Корпус, собранный с помощью PRAW, можно использовать как источник, на который можно ссылаться в рецензировании.
Если хотите углубиться в тему сбора данных из соцсетей с помощью эффективных инструментов или извлечения данных с сайтов в Excel, мы подробно разбирали эти сценарии в блоге Thunderbit.
Итоги
Скрапинг Reddit в 2025 году совсем не такой, как два года назад. Изменения API в 2023 году убили Pushshift, закрыли любимые сторонние приложения и ввели платные уровни доступа.
Но бесплатный тариф по-прежнему жив и подходит для личного и академического использования, а способов получить данные стало даже больше.
Краткий итог по каждому методу:

Опытный Python-разработчик вы или человек, которому к обеду нужна таблица, — один из этих четырёх способов вам подойдёт. Если хотите вообще обойтись без кода, можете попробовать Thunderbit бесплатно и посмотреть, как он справляется с Reddit за пару кликов. А если хотите дальше прокачивать навыки Python-скрапинга, сохраните этот материал в закладки — я буду обновлять его по мере изменений в экосистеме Reddit.
Заодно посмотрите наши материалы о скрапинге сайтов на Python, лучших Python-инструментах для веб-скрапинга и лучших практиках веб-скрапинга.
FAQ
Законно ли скрапить Reddit с помощью Python?
В Data API Terms Reddit запрещает коммерческий скрапинг без письменного разрешения. Бесплатный OAuth-тариф доступен для личного, некоммерческого и академического использования. С юридической точки зрения это правило не зависит от канала доступа — оно действует, используете ли вы API, .json endpoint или HTML-скрапинг. Всегда проверяйте актуальные условия Reddit перед масштабным сбором данных.
Работает ли PRAW после изменений API Reddit в 2023 году?
Да. PRAW 7.8.1 (октябрь 2024) активно поддерживается и автоматически работает в рамках бесплатного OAuth-тарифа на 100 запросов в минуту. Изменения ценовой политики 2023 года в основном затронули высоконагруженное и коммерческое использование API, а не типовые сценарии скрапинга через PRAW.
Можно ли скрапить Reddit без API-ключа?
Да — .json endpoint и HTML-парсинг через BeautifulSoup работают без API-ключей. Thunderbit тоже не требует API-ключа. Но все три метода для коммерческого использования всё равно подчиняются правилам Reddit.
Как собирать не только посты, но и комментарии Reddit?
С помощью PRAW используйте submission.comments.replace_more(limit=10), а затем submission.comments.list(), чтобы превратить вложенное дерево комментариев в список. В Thunderbit можно использовать скрапинг подстраниц, чтобы автоматически обогатить список постов данными из комментариев каждой ветки.
Какой способ самый быстрый для скрапинга Reddit без программирования?
Расширение Thunderbit для Chrome позволяет собирать посты и комментарии Reddit буквально за два клика и сразу экспортировать данные в Excel, Google Sheets, Airtable или Notion — без Python, без API-ключа и без настройки.
Подробнее


