scrape-add-page-object について
Scrapy プロジェクトに空の web-poet ページオブジェクトを追加するスキルです。ファイルの新規作成と既存モジュールへのクラス追加に対応し、必須 item フィールドの自動検出や、指定フィールドによる上書きもできます。
主な機能
- 01Python モジュールの新規作成と拡張
- 02URL 処理付きページオブジェクトの追加
- 03必須 item フィールドの自動検出
- 04カンマ区切りリストによるフィールド指定
- 05既存ファイルへの追加時に import を統合
活用シーン
- 01新しいドメイン向けページオブジェクトのひな形作成
- 02既存モジュールへのページクラス追加
- 03必須 item フィールドのスタブ生成
- 04自動検出を使わず対象フィールドを指定
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ zytedata/ skills --skill scrape-add-page-objectインストール後、Claude Code で/scrape-add-page-objectを入力して読み込まれたか確認します。
同梱ファイルscripts/add_page_object.py
詳細
Scrapy プロジェクトに空の web-poet ページオブジェクトを追加します。
${CLAUDE_SKILL_DIR}/../scrape/references/python-environments.md を読みます。
入力
生の引数文字列は $ARGUMENTS です。空白区切りの位置引数を最大 6 個に分割します。
- file_path:作成または追記する .py ファイルのパス(例:
books_project/pages/books_toscrape_com.py) - class_name:ページオブジェクトのクラス名(例:
ProductPage) - domain:
@handle_urlsに指定するドメイン(例:books.toscrape.com) - base_class:基底クラスのインポートパス(例:
web_poet.WebPage) - item_class:アイテムクラスのインポートパス(例:
books_project.items.ProductItem) - fields:省略可能。フィールド名をカンマ区切りで指定します(例:
name,price,rating)
手順
アイテムクラスをインポートして必須フィールドを自動検出できるよう、プロジェクトのルート(pyproject.toml を含むディレクトリ)から実行します。
uv run --project . --with libcst ${CLAUDE_SKILL_DIR}/scripts/add_page_object.py \
FILE_PATH CLASS_NAME DOMAIN BASE_CLASS ITEM_CLASS
必須フィールド(アイテムクラスでデフォルト値がないフィールド)は itemadapter で自動検出され、@field スタブが設定されます。すべてのフィールドにデフォルト値がある場合、クラス本体は pass になります。自動検出を上書きするには、--fields name,price を指定します。
このスクリプトでは、AST を正しく操作するために libcst を使用します。
- ファイルが存在しない場合は作成します
- 既存ファイルにはインポートを適切に統合して追記します
- 1 つのモジュールで複数のページオブジェクトを共有できます(例:
ProductPageとCategoryPage)
よく使われる基底クラス:
web_poet.WebPage— HTTP レスポンスを使用するページ向け(最も一般的)
コメント
Markdown 対応