[STATUS: ONLINE] 当サイトは要約付きのエンジニア向けFeedです。

TechDistill.dev

[DISCLAIMER] 当サイトの要約は正確性を保証しません。気になる記事は必ず原文を確認してください。
cd ..

【要約】【Python】PlaywrightでManabaの課題を自動取得するアプローチ [Zenn_Python] | Summary by TechDistill

> Source: Zenn_Python
Execute Primary Source

// Problem

大学の学生が、学習管理システムManabaの機能不足により、課題管理に苦慮している。Manabaは外部連携が乏しく、課題のリマインドが困難なため、以下の課題が存在する。
  • SAML認証の壁:一度限りの認証鍵を用いる方式のため、単純なHTTP Requestではログインが困難である。
  • Cookie管理の限界:持続的なログイン状態を維持する実装が、標準的なリクエスト手法では難しい。
  • 情報の非構造化:課題の詳細や締切がWeb画面上に散在しており、手動での集計に手間がかかる。

// Approach

開発者が、Playwrightを活用して人間がブラウザを操作する環境を再現し、課題情報の自動取得を試みた。具体的な手法は以下の通りである。
  • ブラウザ自動化:PlaywrightでChromiumを制御し、ユーザーIDとパスワードによるログインを自動化する。
  • リンクの特定:課題一覧のテーブルから、タイトル部分のリンクを正確に抽出するロジックを実装する。
  • 多段階フォールバック:説明文の取得において、複数のCSSセレクタを順次試行し、取得率を高める。
  • 多形式出力:取得したデータを、詳細JSON、統計JSON、および分析用CSVの3形式で保存する。

// Result

開発者が、Manaba上の課題情報を構造化データとして取得することに成功した。この成果により、以下の活用が可能となる。
  • タスク管理の自動化:取得したJSONデータをn8n等のツールへ渡し、TODOリストへ自動追加できる。
  • 学習計画の最適化:CSV形式のデータを用いることで、締切日や課題タイプに基づいた分析が可能になる。
  • 運用の展望:現在はローカル環境での動作だが、サーバー化による常時稼働も視野に入れている。

Senior Engineer Insight

> 本手法は、APIが欠如したレガシーなシステムに対する現実的な解である。特に、SAML認証のような複雑なフローを回避するためにブラウザ自動化を選択した判断は実戦的だ。ただし、DOM構造への強い依存は、サイト更新時にスクリプトが即座に破損するリスクを孕む。運用フェーズでは、セレクタの変更を検知する監視や、環境変数による認証情報の厳格な管理が不可欠である。また、time.sleepによる負荷軽減は最低限の措置であり、大規模な実行時にはサーバーへの影響をより慎重に評価すべきだ。

[ RELATED_KERNELS_DETECTED ]

cd ..

> System.About()

TechDistillは、膨大な技術記事から情報の真髄(Kernel)のみを抽出・提示します。