puppeteer-automation は何をしますか?
Puppeteer を使用したブラウザ自動化の専門ガイダンス。Web スクレイピング、テスト、スクリーンショット取得、ヘッドレス Chrome での JavaScript 実行のベストプラクティスを提供します。
主要機能
- Web スクレイピング: 動的ページからのデータ抽出、無限スクロール対応、認証が必要なサイトへのアクセス。
- テスト自動化: E2E テスト、フォーム送信、UI 検証。
- スクリーンショット/PDF: 特定要素のキャプチャ、フルページスクリーンショット、PDF 生成。
- JavaScript 実行: ページコンテキストでのコードインジェクション、変数抽出。
- ネットワーク制御: リクエストインターセプト、レスポンスモック、スロットリング。
使用方法
インストール
npm install puppeteer
基本例
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({ headless: true });
const page = await browser.newPage();
await page.goto('https://example.com');
await page.screenshot({ path: 'screenshot.png' });
const title = await page.title();
console.log(`ページタイトル: ${title}`);
await browser.close();
})();
ベストプラクティス
- エラーハンドリング: 非同期処理には常に try/catch ブロックを使用する。
- リソース管理: スクレイピング後は必ず
browser.close()を呼び出してリソースを解放する。 - セレクター戦略: 変更に強い ID や data-testid 属性を使用し、フラジャイルな CSS クラスは避ける。
- 待機戦略:
page.waitForSelector()やpage.waitForNetworkIdle()で適切に待機する。固定のsetTimeout()は避ける。 - ユーザーエージェントとビューポート: 実際のブラウザエミュレーションには適切な UA とビューポートサイズを設定する。
高度なテクニック
- 複数タブの操作:
browser.pages()でタブを管理する。 - 認証の処理:
page.authenticate()または Cookie の設定を使用する。 - ファイルダウンロード: ダウンロードフォルダを指定してファイルをキャプチャする。
- Chrome DevTools Protocol (CDP):
page.cdpSession()で低レベル制御を行う。
注意事項
- 対象 Web サイトの
robots.txtと利用規約を常に尊重すること。 - 過剰なリクエストによるサーバー負荷を避けるため、適切なレート制限を実装すること。
- スクレイピングしたデータの法的利用について確認すること。