株式会社WR

株式会社WR

WEB TOTAL CONSULTING

創業初期に取り組んだWebスクレイピング案件——ECデータ収集の自動化
ブログ一覧へ
技術ブログ

創業初期に取り組んだWebスクレイピング案件——ECデータ収集の自動化

創業まもなく取り組んだのが、楽天・Amazonの商品情報を自動収集するスクレイピングツールの開発でした。PuppeteerとNode.jsを組み合わせた実装と、そこで学んだことをまとめます。

最初の本格案件

創業から数ヶ月、最初に本格的に取り組んだのはECサイトの商品情報を自動収集するスクレイピングツールの開発でした。

クライアントの課題は「楽天・Amazonで毎日手動で価格を調べているが、商品数が多すぎて追いきれない」というものでした。


技術的なアプローチ

// Puppeteerで楽天の検索結果を取得する基本パターン
const puppeteer = require('puppeteer');

async function scrapeRakuten(keyword) {
    const browser = await puppeteer.launch({ headless: true });
    const page = await browser.newPage();

    // ユーザーエージェントを設定(クローラーと判定されにくくする)
    await page.setUserAgent(
        'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36'
    );

    const url = `https://search.rakuten.co.jp/search/mall/${encodeURIComponent(keyword)}/`;
    await page.goto(url, { waitUntil: 'networkidle2' });

    const products = await page.$$eval('.searchresultitem', items =>
        items.map(item => ({
            title: item.querySelector('.title')?.textContent?.trim(),
            price: item.querySelector('.price')?.textContent?.trim(),
            url:   item.querySelector('a')?.href,
        }))
    );

    await browser.close();
    return products;
}

学んだこと

レート制限への対応 短時間に大量リクエストを送るとブロックされます。リクエスト間隔を1〜3秒ランダムに設定することで回避できました。

ページネーション処理 「次のページ」ボタンを自動でクリックしながら全ページ収集するロジックの実装に工夫が必要でした。

データの正規化 各ECサイトで価格表示の形式が異なるため、文字列から数値へのパース処理が重要でした。


結果

週次で手動3〜4時間かかっていた調査作業が、完全自動化されました。このプロジェクトがきっかけで、スクレイピング案件の受注が増えていきました。

Category 技術ブログ

Related Posts

関連記事

開発・技術のご相談はお気軽に

お見積りは無料です。まずはお気軽にご相談ください。

お問い合わせ →