mcpField
S
scrape-add-page-object

scrape-add-page-object

github.com/zytedata開発11169 回インストール2 日前に更新
リポジトリ

scrape-add-page-object について

Scrapy プロジェクトに空の web-poet ページオブジェクトを追加するスキルです。ファイルの新規作成と既存モジュールへのクラス追加に対応し、必須 item フィールドの自動検出や、指定フィールドによる上書きもできます。

主な機能

  1. 01Python モジュールの新規作成と拡張
  2. 02URL 処理付きページオブジェクトの追加
  3. 03必須 item フィールドの自動検出
  4. 04カンマ区切りリストによるフィールド指定
  5. 05既存ファイルへの追加時に import を統合

活用シーン

  1. 01新しいドメイン向けページオブジェクトのひな形作成
  2. 02既存モジュールへのページクラス追加
  3. 03必須 item フィールドのスタブ生成
  4. 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 個に分割します。

  1. file_path:作成または追記する .py ファイルのパス(例:books_project/pages/books_toscrape_com.py)
  2. class_name:ページオブジェクトのクラス名(例:ProductPage)
  3. domain:@handle_urls に指定するドメイン(例:books.toscrape.com)
  4. base_class:基底クラスのインポートパス(例:web_poet.WebPage)
  5. item_class:アイテムクラスのインポートパス(例:books_project.items.ProductItem)
  6. 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 レスポンスを使用するページ向け(最も一般的)

コメント