University Info Bot(大学情報ボット)
概要
University Info Botは、米国の主要なコンピュータサイエンス系大学に関する情報をスクレイピングで収集し、Telegram経由で閲覧できるようにするPythonプロジェクトです。US NewsやCSRankingsなどの外部データを組み合わせて大学ランキング、出願締切、教員リストなどを構築・提供します。動的コンテンツに対応するためChromedriverを利用しており、config.pyでAPIトークンやスクレイピング設定を管理します。デモボットが公開されており、実際の対話で情報を取得できます。
リポジトリの統計情報
- スター数: 2
- フォーク数: 0
- ウォッチャー数: 2
- コミット数: 2
- ファイル数: 13
- メインの言語: Python
主な特徴
- US NewsやCSRankingsなど複数ソースからスクレイピングしてデータを集約
- Telegramボットとして対話的にランキング・締切・教員情報を提供
- Chromedriverを用いた動的ページ対応(Selenium等を想定)
- 設定はconfig.pyで集中管理、デプロイ可能な構成
技術的なポイント
このプロジェクトは「スクレイピング」→「集約」→「配信(Telegram)」という典型的なパイプラインで構成されています。READMEにある通りUS NewsやCSRankingsといった複数ソースから情報を収集するため、静的HTMLの解析だけでなく、JavaScriptで生成される動的コンテンツに対処する必要があります。本リポジトリにはChromedriver関連のファイルが含まれており、SeleniumやヘッドレスChromeを用いてページをレンダリングし、必要なDOMを抽出していることがうかがえます。config.pyはAPIトークンやスクレイピングの挙動(タイムアウト、ヘッダ、スリープ間隔)を管理する想定で、運用時の安全な設定保管や環境変数との連携が考慮されています。
データ処理面では、複数ソースから来る情報の正規化(大学名の表記ゆれ、カラム統一、締切日の形式変換など)が重要です。構成は小規模スクリプト群による実装で、頻繁なリクエストに対するレート制御・キャッシュ(ローカルJSONやSQLiteなど)・例外処理が求められます。Telegram側はボットAPIを利用し、コマンドやインラインクエリでランキング検索や学校詳細を返す設計が想定されます。今後の改善案としては、データベース化して差分更新を行う仕組み、テストとCI、スクレイピングの法的・倫理的チェック(robots.txtや利用規約の遵守)を組み込むことが挙げられます。
プロジェクトの構成
主要なファイルとディレクトリ:
- LICENSE: file
- LICENSE.chromedriver: file
- README.md: file
- THIRD_PARTY_NOTICES.chromedriver: file
- config.py: file
…他 8 ファイル
(注)上記はリポジトリルートの主なファイル一覧です。config.pyにボットトークンやターゲットURL、スクレイピング設定が集中しているため、ローカルや本番環境ごとに環境変数で管理するのが安全です。またChromedriver関連のライセンス・NOTICEファイルが含まれており、ブラウザ自動化に必要な実行ファイルや依存情報が同梱されていることが示唆されます。
まとめ
小規模ながら実用的な大学情報スクレイピング+Telegram配信のテンプレートで、データ集約や自動化プロジェクトの出発点として有用です(約50字)。