web-scraping-automation
Webサイトのデータ取得やAPIへのアクセスを自動化するスキルです。Webページのコンテンツのスクレイピング、APIの呼び出し、データの解析、クローラースクリプトの作成が必要なときに活用できます。
description の原文を見る
自动化爬取网站数据和 API 接口。当用户需要抓取网页内容、调用 API、解析数据或创建爬虫脚本时使用此技能。
SKILL.md 本文
ウェブサイトスクレイピングと API 自動化
機能説明
このスキルはウェブサイトデータの自動スクレイピングと API インターフェースの呼び出しに特化しており、以下を含みます:
- ウェブサイト構造の分析とスクレイピング
- REST/GraphQL API の呼び出しとテスト
- 自動化スクレイピングスクリプトの作成
- データの解析とクレンジング
- アンチスクレイピング対策への対応
- 定期実行タスクとデータ保存
使用シーン
- 「このウェブサイトの商品情報をスクレイピングしてください」
- 「このAPIを呼び出してデータを解析してください」
- 「定期的にニュースを取得するスクリプトを作成してください」
- 「このウェブサイトのAPI仕様書を分析してください」
- 「このウェブサイトのアンチスクレイピング制限を回避してください」
技術スタック
⚠️ リソースクリーンアップの原則(必須)
すべてのブラウザを使用したスクレイピングタスク完了後、Chrome/Selenium プロセスを自動的に閉じる必要があります!
# Playwright の例
from playwright.sync_api import sync_playwright
def scrape_website():
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page()
# ... スクレイピングロジック ...
browser.close()
# ⚠️ 残留プロセスを強制クリーンアップ
import subprocess
subprocess.run(['pkill', '-f', 'chrome'], capture_output=True)
# Selenium の例
from selenium import webdriver
driver = webdriver.Chrome()
try:
# ... スクレイピングロジック ...
pass
finally:
driver.quit()
# ⚠️ クリーンアップを確認
import subprocess
subprocess.run(['pkill', '-f', 'chrome'], capture_output=True)
理由: メモリリークとリソース占有を避け、Gateway CPU が 100% 過負荷になることを防ぎます
Python スクレイピング
- requests:HTTP リクエストライブラリ
- BeautifulSoup4:HTML パーサー
- Scrapy:プロフェッショナルスクレイピングフレームワーク
- Selenium:ブラウザ自動化
- Playwright:モダンブラウザ自動化
JavaScript スクレイピング
- axios:HTTP クライアント
- cheerio:サーバーサイド jQuery
- puppeteer:Chrome 自動化
- node-fetch:Fetch API
ワークフロー
-
ターゲット分析:
- ウェブサイト構造とデータの場所を確認
- API インターフェースと認証方法を分析
- アンチスクレイピング対策を評価
-
ソリューン設計:
- 適切な技術スタックを選択
- データ抽出戦略を設計
- エラー処理と再試行メカニズムを計画
-
スクリプト開発:
- スクレイピングコードを作成
- データ解析ロジックを実装
- ログとモニタリングを追加
-
テストと最適化:
- データの正確性を検証
- パフォーマンスと安定性を最適化
- エッジケースに対応
ベストプラクティス
- robots.txt ルールを遵守
- 適切なリクエスト間隔を設定
- User-Agent とリクエストヘッダーを使用
- エラー再試行メカニズムを実装
- データの重複排除と検証
- 必要に応じてプロキシプールを使用
- 生データとログを保存
一般的なシーン例
1. シンプルなウェブページスクレイピング
import requests
from bs4 import BeautifulSoup
def scrape_website(url):
headers = {'User-Agent': 'Mozilla/5.0'}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
# データ抽出
data = []
for item in soup.select('.product'):
data.append({
'title': item.select_one('.title').text,
'price': item.select_one('.price').text
})
return data
2. API 呼び出し
import requests
def call_api(endpoint, params=None):
headers = {
'Authorization': 'Bearer YOUR_TOKEN',
'Content-Type': 'application/json'
}
response = requests.get(endpoint, headers=headers, params=params)
return response.json()
3. 動的ウェブページのスクレイピング
from selenium import webdriver
from selenium.webdriver.common.by import By
def scrape_dynamic_page(url):
driver = webdriver.Chrome()
driver.get(url)
# ページロードを待機
driver.implicitly_wait(10)
# データ抽出
elements = driver.find_elements(By.CLASS_NAME, 'item')
data = [elem.text for elem in elements]
driver.quit()
return data
アンチスクレイピング対策戦略
- リクエストヘッダーマスキング:実際のブラウザをシミュレート
- プロキシローテーション:プロキシプールを使用
- CAPTCHA 処理:OCR または第三者サービス
- Cookie 管理:セッション状態を維持
- リクエスト頻度制御:制限トリガーを回避
- JavaScript レンダリング:Selenium/Playwright を使用
データ保存ソリューション
- CSV/Excel:シンプルなデータエクスポート
- JSON:構造化データ保存
- データベース:MySQL、PostgreSQL、MongoDB
- クラウドストレージ:S3、OSS
- データウェアハウス:大規模データ分析用
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- aaaaqwq
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/aaaaqwq/claude-code-skills / ライセンス: MIT
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。