概要
reddit-universal-scraperは、Redditのあらゆるコンテンツを効率的に抽出するPythonライブラリ。ポスト、コメント、画像、動画、ギャラリーなど、複合的なデータ収集に対応した汎用ツールとして設計されている。APIキーが不要な実装により、認証の煩雑さなく大規模なRedditデータの収集が可能。データ分析や自然言語処理の研究向けとして活用される。
主な機能
- Full Scraping:ポスト、コメント、画像、動画、ギャラリーの一括抽出。タイトル・本文・スコア・作成日時などのメタデータも自動取得
- Web Dashboard:Streamlitを使用した美しいUIで7つのタブから操作可能。データ閲覧と管理が直感的に実現
- REST API:MetabaseやGrafana、DuckDBなど外部ツールとの連携機能を備えたAPI
- Plugin System:センチメント分析、重複排除、キーワード抽出などの後処理をプラグインで拡張可能
- Job Tracking:スクレイピング履歴、ステータス、実行時間、エラー情報を詳細に記録
- Dry Run Mode:データ保存せずにスクレイピングルールをテスト実行
- Parquet Export:DuckDBやデータウェアハウス向けの分析対応フォーマットでのエクスポート
- Sentiment Analysis:ポストとコメントのセンチメント分析機能
- Scheduled Scraping:Cron形式でのジョブスケジューリング対応
- Notifications:DiscordおよびTelegramへのアラート機能
- SQLite Database:構造化されたデータベース保存と自動バックアップ
クイックスタート
インストール
pip install -r requirements.txt
基本的な使用例
# フルスクレイプ(ポスト+メディア+コメント)
python main.py python --mode full --limit 100
# ダッシュボード起動
python main.py --dashboard
# http://localhost:8501 で起動
環境要件
- Python 3.8以上
- ffmpeg(動画処理が必要な場合)
# Windows(chocolatey経由)
choco install ffmpeg
# macOS
brew install ffmpeg
# Ubuntu/Debian
sudo apt install ffmpeg
実践的な使い方
ケース1:複数サブレディットからのデータ収集
複数のサブレディットから効率的にコンテンツを取得する場合の基本的な流れ:
# 複数サブレディットからのフルスクレイプ
python main.py MachineLearning --mode full --limit 100
python main.py datascience --mode full --limit 100
python main.py Python --mode full --limit 100
# 結果をダッシュボードで分析
python main.py --dashboard
ダッシュボードのプラグイン機能を使用してセンチメント分析やキーワード抽出を実行。取得データはParquet形式でエクスポート可能。
ケース2:スケジュールに基づくデータ収集運用
Scheduled Scraping機能により、定期的なデータ収集を自動実行。DiscordまたはTelegramへの通知機能により、実行状況の把握が可能。
SQLite データベースに蓄積されたデータは、REST APIを経由して外部ツールからアクセス。Grafanaでのダッシュボード構築やDuckDBでのアドホック分析が可能。
ケース3:複数フォーマット出力による柔軟な連携
収集したデータを複数形式で同時出力:
- Parquet形式:DuckDB、Pandas、Polarsでの高速分析に対応
- SQLiteデータベース:ローカルでのSQL クエリ実行、自動バックアップ機能
- REST API:外部システムへのリアルタイムデータ提供
Job Tracking機能で各実行の履歴を記録。エラー発生時は詳細ログにより、トラブルシューティングが効率化される。
まとめ
reddit-universal-scraperは、Redditデータの効率的な収集と分析が必要なデータサイエンティスト、研究者、ジャーナリスト、機械学習エンジニア向けの実用的なツール。APIキーが不要で認証の手間を削減。Web ダッシュボード、REST API、複数の出力フォーマット対応により、データ取得から分析までの一連のワークフローを統合的に実現。
推奨される利用シーン:自然言語処理のコーパス構築、Redditコミュニティのセンチメント分析、特定業界のトレンド追跡、ユーザー行動分析、定期的なデータ監視と自動レポート生成。
注意点:Reddit利用規約で定められたレート制限への準守が必須。過度なスクレイピングはIPブロックのリスク。データ収集時には十分な間隔を設定し、responsible な利用が求められる。また、個人識別情報(PII)の取得・利用は禁止。