やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

Python文書から学習項目を抜き出すためにどうすればいいか

とりあえず考えてみる。

目標

  1. Pythonドキュメントダウンロード
  2. Webスクレイピングして学習項目を抜き出す
  3. 学習網羅率表をつくる

今回はイメージだけ。

Pythonドキュメントダウンロード

wget -r -l inf -w 1 --restrict-file-names=nocontrol https://docs.python.jp/3/
終了しました --2017-05-06 06:26:06--
経過時間: 54m 13s
ダウンロード完了: 2947 ファイル、133M バイトを 1m 7s で取得 (2.00 MB/s)

Webスクレイピングして学習項目を抜き出す

学習項目

全体の目次から一覧を取得する。

これをWebスクレイピングでやるか。1ページあたりの小見出しまで目次に出ている。URLとid属性値の組合せになって一意の値がある。これで学習項目の網羅ができそう。

細分化

さらに独自に本文から小項目に分けて1コードを書けるような題目にする。これは独自の「小学習項目」として別途網羅する。元となった学習項目のリンクを保持したい。本文から発展した疑問については「課題」とする。

学習項目が網羅できたら、その達成を自動集計できるようにしたい。

学習項目から独自に「課題」を抽出して学習を深めたい。その達成を自動集計したい。

インプット コード単位分類 課題
1PyDoc見出し n小学習項目 n課題
  • PyDoc見出し
    • 小学習項目
      • 課題
項目 説明
PyDoc見出し 全体の目次から取得できる項目。
小学習項目 PyDoc見出しの本文を細分化したもの。単一の個別コードができる単位に分ける。
課題 PyDoc見出し本文を読んで生じた個人的な疑問。

小学習項目や課題に対してPythonコードを書く。それが成果物となる。1課題1コード。具体的な項目はやりながら作る。

学習網羅率表をつくる

Python3.6.1ドキュメントの学習網羅表。とりあえずイメージ。

網羅表

項目 見出し数 クリア数 クリア率
Python3.6.1ドキュメント学習 3 0 0.00%
項目 見出し数 クリア数 クリア率
一覧 11 0 0.00%
索引と目次 4 0 0.00%
メタ情報 4 0 0.00%
項目 見出し数 クリア数 クリア率
一覧 > 言語 5 0 0.00%
一覧 > 周辺ツール 3 0 0.00%
一覧 > 拡張 2 0 0.00%
一覧 > FAQ 1 0 0.00%
索引と目次 4 0 0.00%
メタ情報 4 0 0.00%
項目 見出し数 クリア数 クリア率
一覧 > 言語 > What’s new in Python 3.6? ? 0 0.00%
一覧 > 言語 > チュートリアル ? 0 0.00%
一覧 > 言語 > ライブラリーリファレンス ? 0 0.00%
一覧 > 言語 > 言語リファレンス ? 0 0.00%
一覧 > 言語 > Python HOWTO ? 0 0.00%
一覧 > 周辺ツール > Python のセットアップと利用 ? 0 0.00%
一覧 > 周辺ツール > Python モジュールのインストール ? 0 0.00%
一覧 > 周辺ツール > Python モジュールの配布 ? 0 0.00%
一覧 > 拡張 > 拡張と埋め込み ? 0 0.00%
一覧 > 拡張 > Python/C API ? 0 0.00%
一覧 > FAQ > Python/C API ? 0 0.00%
索引と目次 > 全モジュール索引 ? 0 0.00%
索引と目次 > 総索引 ? 0 0.00%
索引と目次 > 用語集 ? 0 0.00%
索引と目次 > 全体の目次 ? 0 0.00%
メタ情報 > バグを報告する ? 0 0.00%
メタ情報 > このドキュメントについて ? 0 0.00%
メタ情報 > Python の歴史とライセンス ? 0 0.00%
メタ情報 > Copyright ? 0 0.00%

全体の目次から一覧を取得するからもっと細かくなる。多すぎると見づらい。うまく表現するにはどうすればいいのか。

所感

具体的なHTMLがイメージできないと項目の抽出ができない。抽出データをどう扱うか定まらない。