Python バージョンの確認

このシリーズは Python 3.9 以上を前提とする。 dataclass のフィールドデフォルト・型ヒントの記法が 3.9+ で自然に書けるためだ。 Python 3.12 を推奨するが、3.9〜3.11 でも動作する。

Shell — バージョン確認
python --version
# または
python3 --version
期待する出力
Python 3.12.3

⚠️ Python 3.8 以下は非対応

Python 3.8 は 2024 年 10 月に EOL となっている。また dataclasses.field(default_factory=list) の挙動が 3.9 以降で安定しているため、必ず 3.9 以上を使用すること。

仮想環境の作成と有効化

グローバルの Python 環境を汚染しないよう、プロジェクトごとに仮想環境を作る。 Python 標準の venv モジュールで十分だが、好みで uv を使っても良い。

Shell — venv(標準)
# プロジェクトフォルダを作成
mkdir input-extractor
cd input-extractor

# 仮想環境を作成(フォルダ名は .venv が慣例)
python -m venv .venv

# 有効化(Windows)
.venv\Scripts\activate

# 有効化(macOS / Linux)
source .venv/bin/activate

# 有効化後はプロンプトが変わる
# (.venv) C:\input-extractor>
Shell — uv(高速代替)
# uv のインストール(未導入の場合)
pip install uv

# プロジェクト初期化 + 仮想環境作成
uv venv

# 有効化(Windows)
.venv\Scripts\activate

仮想環境を無効化するには

deactivate コマンドを実行する。プロンプトから (.venv) が消えれば無効化できている。

requirements.txt の全体像

シリーズ全体で使うパッケージを先にまとめておく。 PART 03・04 でそれぞれ詳細なインストール手順を説明するが、 まず全体像を把握しておくと迷わない。

Text — requirements.txt(全体)
# 静的ページ解析
requests==2.32.3
beautifulsoup4==4.12.3
lxml==5.2.2

# 動的ページ解析(JS レンダリング)
playwright==1.44.0

# データ出力補助(任意)
dataclasses-json==0.6.7
パッケージ用途必須 / 任意
requestsHTTP クライアント — 静的ページの HTML を取得必須(静的)
beautifulsoup4HTML パーサー — タグを検索・属性を取得必須(静的)
lxml高速 HTML パーサー(BeautifulSoup のバックエンド)推奨
playwrightヘッドレスブラウザ — JS 生成の DOM を操作必須(動的)
dataclasses-jsondataclass を JSON に直接シリアライズ任意
Shell — 一括インストール
# 仮想環境が有効な状態で実行する
pip install -r requirements.txt

推奨ディレクトリ構成

Text — プロジェクト構成
input-extractor/
├── .venv/                  # 仮想環境(Git 管理外)
├── requirements.txt        # パッケージ一覧
├── extractor/
│   ├── __init__.py
│   ├── models.py           # PART 05 — dataclass 定義
│   ├── static.py           # PART 06 — 静的ページ抽出
│   └── dynamic.py          # PART 07 — 動的ページ抽出
├── examples/
│   └── run_extract.py      # 動作確認スクリプト
└── output/                 # JSON / CSV の出力先

次の章では…

PART 03 では静的ページ解析に使う requests + BeautifulSoup のインストールと動作確認を詳しく解説します。

→ PART 03 — requests + BeautifulSoup へ