計画型ウェブクローリング
ユーザーリクエストを受け取った後、すぐに大量収集に入らず、まずソース構造を把握し証拠を保存しながら計画を絞り込んでいきます。このスキルは調査型クローリングのために urllib ベースのセッション、HTML/JSON/PDF プロービング、リンク追跡、単純なページネーション実行機能を提供します。
作業フロー
- 調査目標を1~3文で整理する。
- 最も公式な開始URLまたはファイルを見つける。
scripts/crawlkit.py probeで最初の応答の構造を確認する。- プローブ結果を基に収集経路を決定する。
- 繰り返しリクエストが必要な場合は
scripts/run_collection_plan.py用の計画ファイルを作成する。 - 結果と元のスナップショットパスを一緒に報告する。
クイックスタート
最初の構造把握:
python3 adaptive-web-research/scripts/crawlkit.py probe "https://example.com/list" --output-dir /tmp/example-probe --save-body
ローカルHTMLファイルの分析:
python3 adaptive-web-research/scripts/crawlkit.py probe "./sample.html"
計画の実行:
python3 adaptive-web-research/scripts/run_collection_plan.py ./plan.json --output-dir /tmp/example-run
判断基準
- HTMLの場合は、タイトル、リンク、フォーム、テーブル、JSON-LD、ページネーションの候補をまず確認する。
- JSONの場合は、トップレベルの型とリストキーを確認し、繰り返しリクエストのルールを決定する。
- PDFの場合は、サンプルテキストとページ数を確認し、必要に応じて後続パーサーを追加する。
- CookieやPOSTが必要な場合は、
run_collection_plan.pyのrequestステップでまず再現する。 - JSレンダリング依存が強い場合は、迂回するよりも代替の公式ソースや隠れJSONエンドポイントを先に探す。
スクリプト
scripts/crawlkit.pyprobe: 応答構造の要約fetch: 元のスナップショットを保存
scripts/run_collection_plan.pyrequest,paginate,follow_linksステップを実行
参考ドキュメント
- 詳細な運用フロー:
references/collection-workflow.md - 計画JSONの例:
references/plan-schema.md
作業原則
- プローブなしでCSSセレクタやページ構造を断定しないこと
- 応答元データを保存せずに要約だけ残さないこと
- サイト固有のルールは基本スキルに含めず、実際の作業中に必要な場合に小さな補助スクリプトとして分離すること
- 収集結果には使用したURL、リクエスト方式、保存パスを一緒に残すこと