mcpField
W
web-scraper

web-scraper

github.com/agentbay-aiデータ・データベース50227 回インストール37 週間前に更新
リポジトリ

web-scraper について

web-scraper は、ウェブページを取得してローカルに保存するコマンドラインスキルで、ページのアーカイブやドキュメント収集に使えます。ブラウザー自動化なしで、HTML・Markdown 出力、画像保存、範囲を指定した再帰クロールに対応します。

主な機能

  1. 01単一ウェブページの取得
  2. 02HTML または Markdown への出力
  3. 03画像のローカル保存
  4. 04範囲を指定したリンク追跡
  5. 05robots.txt の順守とリクエスト速度の調整

活用シーン

  1. 01ウェブページのオフライン保存
  2. 02同一ドメイン内のドキュメントのアーカイブ
  3. 03ページ本文と関連画像の保存

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/agentbay-ai/agentbay-skills --skill web-scraper

インストール後、Claude Code で/web-scraperを入力して読み込まれたか確認します。

同梱ファイルrequirements.txtscripts/scrape.py

詳細

Web スクレイパー

Web ページのコンテンツ(テキスト+画像)を取得し、HTML または Markdown としてローカルに保存します。

最小限の依存関係:必要なのは requests と beautifulsoup4 のみです。ブラウザー自動化は不要です。

デフォルトの動作:画像は自動的にローカルの images/ ディレクトリにダウンロードされます。

クイックスタート

単一ページ
{baseDir}/scripts/scrape.py --url "https://example.com" --format html --output /tmp/page.html
{baseDir}/scripts/scrape.py --url "https://example.com" --format md --output /tmp/page.md
再帰(リンクをたどる)
{baseDir}/scripts/scrape.py --url "https://docs.example.com" --format md --recursive --max-depth 2 --output ~/Downloads/docs-archive

セットアップ

Python 3.8 以降と最小限の依存関係が必要です。

cd {baseDir}
pip install -r requirements.txt

または、手動でインストールします。

pip install requests beautifulsoup4

注:ブラウザーやドライバーは不要です。純粋な HTTP リクエストを使用します。

収集する入力情報

単一ページモード
  • URL:スクレイピングする Web ページ(必須)
  • 形式:html または md(デフォルト:html)
  • 出力パス:ファイルの保存先(デフォルト:自動生成された名前で現在のディレクトリに保存)
  • 画像:デフォルトで画像をダウンロードします(無効にするには --no-download-images を使用)
再帰モード(--recursive)
  • URL:再帰スクレイピングの開始点
  • 形式:html または md
  • 出力ディレクトリ:スクレイピングしたすべてのページの保存先
  • 最大深度:リンクをたどる階層の上限(デフォルト:2)
  • 最大ページ数:スクレイピングするページの合計上限(デフォルト:50)
  • ドメインフィルター:同じドメイン内に限定するかどうか(デフォルト:はい)
  • 画像:デフォルトで画像をダウンロードします

会話の流れ

  1. スクレイピングする URL をユーザーに尋ねます
  2. 希望する出力形式(HTML または Markdown)を尋ねます
    • 注:どちらの形式も、デフォルトでテキストと画像を含みます
    • HTML:ダウンロードした画像とともに元の構造を保持します
    • Markdown:ダウンロードした画像を images/ フォルダーに保存した、すっきりとしたテキスト形式です
  3. 再帰モードの場合:最大深度と最大ページ数を尋ねます(任意。適切なデフォルト値があります)
  4. 保存先を尋ねます(または /tmp/ や ~/Downloads/ などのデフォルトパスを提案します)
  5. スクリプトを実行し、成功したことを確認します
  6. 保存したファイルまたはディレクトリのパスを表示します

例

単一ページのスクレイピング
HTML として保存
{baseDir}/scripts/scrape.py --url "https://docs.openclaw.ai/start/quickstart" --format html --output ~/Downloads/openclaw-quickstart.html
Markdown として保存(画像を含む、デフォルト)
{baseDir}/scripts/scrape.py --url "https://en.wikipedia.org/wiki/Web_scraping" --format md --output ~/Documents/web-scraping.md

結果:web-scraping.md と、ダウンロードしたすべての画像を含む images/ フォルダーが作成されます(テキスト+画像)。

画像をダウンロードせずに保存(任意)
{baseDir}/scripts/scrape.py --url "https://example.com" --format md --no-download-images

結果:テキストと画像 URL のみが保存されます(ローカルにはダウンロードされません)。

ファイル名を自動生成
{baseDir}/scripts/scrape.py --url "https://example.com" --format html
# Saves to: example-com-{timestamp}.html
再帰スクレイピング
基本的な再帰クロール(深度 2、同じドメイン、画像を含む)
{baseDir}/scripts/scrape.py --url "https://docs.example.com" --format md --recursive --output ~/Downloads/docs-archive

出力構成(すべてのページのテキスト+画像):

docs-archive/
├── index.md
├── getting-started.md
├── api/
│   ├── authentication.md
│   └── endpoints.md
└── images/              # Shared images from all pages
    ├── logo.png
    └── diagram.svg
カスタム制限での詳細なクロール
{baseDir}/scripts/scrape.py \
  --url "https://blog.example.com" \
  --format html \
  --recursive \
  --max-depth 3 \
  --max-pages 100 \
  --output ~/Archives/blog-backup
robots.txt を無視する(注意して使用してください)
{baseDir}/scripts/scrape.py \
  --url "https://example.com" \
  --format md \
  --recursive \
  --no-respect-robots \
  --rate-limit 1.0
より高速なスクレイピング(レート制限を緩和)
{baseDir}/scripts/scrape.py \
  --url "https://yoursite.com" \
  --format md \
  --recursive \
  --rate-limit 0.2

機能

単一ページモード
  • HTML 出力:元のページ構造を保持します
    • ✅ すっきりとした読みやすい HTML ドキュメント
    • ✅ すべての画像を images/ フォルダーにダウンロード
    • ✅ オフラインでの閲覧に適しています
  • Markdown 出力:読みやすいテキストコンテンツを抽出します
    • ✅ ローカルの images/ ディレクトリに画像を自動ダウンロード(デフォルト)
    • ✅ 画像 URL を相対パスに変換
    • ✅ アーカイブに適した、すっきりとした読みやすい形式
    • ✅ ダウンロードに失敗した場合は元の URL にフォールバック
    • 元の URL のみを保持するには、--no-download-images フラグを使用します
  • シンプルで高速:純粋な HTTP リクエストを使用するため、ブラウザーは不要です
  • ファイル名の自動生成:指定がない場合、URL から安全なファイル名を生成します
再帰モード(--recursive)
  • ✅ インテリジェントなリンク検出:クロールしたページ上のリンクをすべて自動的にたどります
  • ✅ 深さの制御:--max-depth でクロールする階層数を制限します(デフォルト:2)
  • ✅ ページ数の上限:--max-pages で、クロールが際限なく続くのを防ぐために合計ページ数を制限します(デフォルト:50)
  • ✅ ドメインのフィルタリング:--same-domain で開始ドメイン内にクロールを制限します(デフォルト:オン)
  • ✅ robots.txt への準拠:デフォルトでサイトのクロールルールに従います
  • ✅ レート制限:--rate-limit でリクエスト間に遅延を設けます(デフォルト:0.5s)
  • ✅ スマート URL フィルタリング:画像、スクリプト、CSS、重複 URL をスキップします
  • ✅ 進行状況の追跡:成功・失敗・スキップの件数をコンソールにリアルタイムで出力します
  • ✅ 整理された出力:ディレクトリ階層で URL の構造を保持します
  • ✅ 効率的なクロール:サーバーに配慮し、レート制限を設けながら順次クロールします

ガードレール

単一ページモード
  • robots.txt とサイトの利用規約を遵守してください
  • 自動アクセスをブロックするサイトもあります。このツールは標準的な HTTP リクエストを使用します
  • 画像が多い大きなページは、ダウンロードに時間がかかることがあります
再帰モード
  • 少ない設定から開始:まず --max-depth 1 --max-pages 10 でテストしてください
  • robots.txt を遵守:デフォルトではオンです。--no-respect-robots は自分が所有するサイトでのみ使用してください
  • レート制限:デフォルトの 0.5s は適切です。公開サイトでは 0.2s 未満にしないでください
  • 同一ドメイン:--same-domain を有効にしておくことを強く推奨します
  • 進行状況の監視:失敗率が高い場合は、ブロックされている可能性があります
  • ストレージ:再帰クロールでは多数のファイルが生成されることがあります。十分なディスク容量を確保してください
  • 法的事項:対象サイトをクロールしてアーカイブする許可を得ていることを確認してください

トラブルシューティング

  • 接続エラー:インターネット接続と URL が有効かどうかを確認してください
  • 403/ブロック:スクレイピングをブロックするサイトもあります。このツールは実際のブラウザーに近い User-Agent ヘッダーを使用します
  • タイムアウト:読み込みの遅いページでは --timeout フラグを大きくしてください(値の単位は秒です)
  • 画像のダウンロード失敗:画像は元の URL にフォールバックします
  • 画像の欠落:JavaScript で画像を動的に読み込むサイトもあります(非対応)

コメント