シリーズで学んだこと
| PART | 学んだこと |
|---|---|
| 01 | エンティティ抽出の目的・ユースケース・完成イメージの把握 |
| 02 | Python venv による再現性のある開発環境の構築 |
| 03 | requests + BeautifulSoup のインストールとパーサー選定 |
| 04 | Playwright のインストール・ブラウザバイナリ取得・OS 別注意点 |
| 05 | 抽出対象タグ・属性の整理と Python dataclass エンティティ定義 |
| 06 | 静的ページから label 紐付け・select 選択肢を含む完全な抽出実装 |
| 07 | Playwright を使った動的ページ対応・静的版との差分・使い分け判断 |
| 08 | フォーム仕様書 Markdown 生成・テストケースインプット生成・DB カラム候補推定 |
| 09 | SSL エラー・文字化け・JS 未描画・タイムアウトの対処法 |
| 10 | 全体まとめと次のステップ(本記事) |
ツール比較早見表
| 観点 | requests + BeautifulSoup | Playwright |
|---|---|---|
| 対象 | 静的ページ(SSR・PHP・Java 等) | 動的ページ(React / Vue / SPA) |
| 速度 | 速い(0.5〜2 秒) | 遅い(3〜10 秒) |
| JS 実行 | ❌ | ✅ |
| インストール | pip install requests beautifulsoup4 | pip install playwright + playwright install chromium |
| Linux 依存 | 不要 | 別途 install-deps が必要 |
| 推奨する場面 | まず試すべき第一選択肢 | 静的版で 0 件のとき・SPA 確定のとき |
実装チェックリスト
- Python 3.9+ で仮想環境を作成・有効化した
- requirements.txt に全パッケージを記載した
- BeautifulSoup は
beautifulsoup4(4 あり)でインストールした - Playwright は
pip install playwright後にplaywright install chromiumを実行した - Linux 環境では
playwright install-deps chromiumも実行した - InputEntity dataclass を
extractor/models.pyに定義した - 静的版
extract_static()を先に試し、0 件なら動的版に切り替えた - SSL / 文字化けなどのエラーハンドリングを実装した
- 抽出結果を JSON で保存し、人手でレビューした
次のステップ
📌 さらに発展させるアイデア
| テーマ | 概要 |
|---|---|
| 認証が必要なページへの対応 | requests の Session を使ったフォームログイン、Playwright の storage_state を使ったセッション保存・復元。 |
| XPath による高精度な label 探索 | lxml の XPath を使い、より複雑な DOM 構造でも label を正確に紐付ける。 |
| 複数ページの一括処理 | サイトマップから URL リストを取得し、asyncio + Playwright で並列抽出する。 |
| DB 定義書への自動出力 | InputEntity → DB カラム候補 → DDL(CREATE TABLE 文)を自動生成するパイプライン。 |
| Web UI の作成 | Streamlit や FastAPI で「URL を入力すると一覧が表示されるツール」として仕上げる。 |
"""シリーズを通じて完成した extract_inputs の使い方"""
from extractor import extract_inputs
import json, dataclasses
url = "https://example.com/login"
# 静的ページ
entities = extract_inputs(url)
# 動的ページ(SPA など)
# entities = extract_inputs(url, dynamic=True)
# JSON 出力
result = [dataclasses.asdict(e) for e in entities]
print(json.dumps(result, ensure_ascii=False, indent=2))
✅ シリーズ完走おめでとうございます
PART 01 から PART 10 まで読んでいただきありがとうございました。手作業でフォーム項目を転記していた作業を自動化する第一歩として、ぜひ実際のプロジェクトで活用してください。