1000件の商品価格比較データを整理するとき...

こんなシチュエーションを想像してください:朝、上司から「PChome、Momo、Yahooショッピングで『ゲーミングノートPC』を含む商品名と価格をすべて抽出し、Excelレポートにまとめてくれ」と依頼されました。競合分析が目的です。

プログラミングができない場合、あなたは3つのウェブページを開き、「ゲーミングノートPC」を検索することから始めます。そしてマウスで最初のノートPC名を選択し、Ctrl+Cでコピー、Excelに切り替えてCtrl+Vで貼り付け。ページに戻り、価格を選択し、再びコピー&ペースト。 この退屈な作業を10回繰り返した時点で、人生に疑問を抱き始めます。500回目に到達する頃には日が暮れ、目がかすんで誤って別のセルに貼り付けてしまうかもしれません。

これが「ウェブスクレイパー(Web Scraper)」が必要な理由です。

ウェブスクレイパーは、あなたが飼う仮想のクモのようなものです。URLを与え、「ページ内のすべての赤い文字と$マークが付いた数字をかみ砕いて持ってきて」と指示できます。 たった3秒で10ページをクロールし、数千のデータを完璧に整列させることができます。

Pythonエコシステムでは、2つの有名なスクレイピングツールがあります:

  1. Requests:ウェブページのドアをノックし、HTMLソースコードをすべてダウンロードします。
  2. BeautifulSoup:乱雑なHTMLソースコードの中から、ルーペで特定のテキスト(商品名、価格など)を正確に見つけ出します。

スクレイピングの第一法則:ウェブページの「骨格(HTML)」を理解する

データを収集する前に、スクレイパーに「探すものがどのように見えるか」を教える必要があります。 任意のショッピングページを開き、商品名を右クリック -> 「検査(Inspect)」を選択してください。 画面の右側に大量のコードが表示されます。恐れる必要はありません。これがウェブページの骨格(HTML)です。

次のようなものが見つかるかもしれません:

<div class="product-item">
  <h2 class="title">ASUS ROG ハイエンドゲーミングノートPC</h2>
  <span class="price">$45,000</span>
</div>

これがあなたの宝の地図です! Pythonスクレイパーに次のように指示します:「class="product-item"が付いたすべての大きな箱を見つけ、その中からclass="title"のテキストとclass="price"の数字を取り出してください。」


Vibe Prompt実戦:1秒でスクレイピングスクリプト生成

以前は、RequestsとBeautifulSoupを使ったスクレイピングスクリプトを書くために、英語の技術文書を繰り返し参照する必要がありました。タグ名を1文字間違えるだけでスクレイパーがクラッシュすることもありました。 今では、AIに宝の地図を説明するだけで済みます!

【Pythonスクレイピング自動化Prompt】 Pythonスクレイピングスクリプトが必要です。 ターゲットURL:https://example-shop.com/laptops

requestsでページを取得し、BeautifulSoupで解析してください。 ページの構造は次のとおりです:

  1. 各商品は<div class="product-item">で囲まれています。
  2. 商品名は<h2 class="title">内にあります。
  3. 商品価格は<span class="price">内にあります。

これら2つのデータを抽出し、pandasライブラリを使用してlaptops_price.csvというファイルに保存してください。 完全なTry-Catchエラーハンドリングと日本語のコメントを追加してください。ページがスクレイピングをブロックする場合(HTTP 403など)、requestsにブラウザのUser-Agentヘッダを追加してください。

AIが生成した神レベルのスクレイピングスクリプト:

import requests
from bs4 import BeautifulSoup
import pandas as pd

def scrape_laptops():
    url = 'https://example-shop.com/laptops'
    # 実際のGoogle Chromeブラウザを装い、サイトブロックを回避
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
    }

    try:
        print("ウェブページデータの取得を開始...")
        # 1. ページにアクセスしコンテンツをダウンロード
        response = requests.get(url, headers=headers)
        response.raise_for_status() # エラーチェック(404など)

        # 2. ダウンロードした生HTMLをBeautifulSoupで整理
        soup = BeautifulSoup(response.text, 'html.parser')

        # 3. class="product-item"のすべてのコンテナを検索
        items = soup.find_all('div', class_='product-item')
        
        data_list = []

        # 4. コンテナを開き、必要なデータを抽出
        for item in items:
            title_tag = item.find('h2', class_='title')
            price_tag = item.find('span', class_='price')
            
            # データが存在すればクリーンアップして保存
            if title_tag and price_tag:
                title = title_tag.text.strip()
                price = price_tag.text.strip()
                data_list.append({"商品名": title, "価格": price})

        # 5. PandasでCSVレポートに変換
        df = pd.DataFrame(data_list)
        df.to_csv('laptops_price.csv', index=False, encoding='utf-8-sig')
        print(f"✅ スクレイピング完了!{len(data_list)}件のデータをlaptops_price.csvに保存")

    except Exception as e:
        print(f"🚨 スクレイピング失敗:{e}")

# 関数実行
scrape_laptops()

スクレイピングの倫理と法的境界線(Robots.txt)

この強力なスキルを習得すると、「すごい!ループを使って競合会社のサイトから毎秒100回データを取得し、すべての機密データをスクレイピングしよう!」と考えたくなるかもしれません。

すぐにこの考えをやめてください! スクレイピング頻度が高すぎると、相手のサーバーが過負荷でダウンする可能性があります。法的には、これは**DDoS(サービス拒否攻撃)**とみなされ、刑事責任を問われる可能性があります!

スクレイピングを行う際は、次の非公式ルールに必ず従ってください:

  1. 迷惑行為を避ける:ループ内にtime.sleep(3)を追加し、各ページ取得後に3秒間休止させ、サーバーに負荷をかけないようにします。
  2. Robots.txtを遵守する:スクレイピング対象のURLに/robots.txtを追加します(例:google.com/robots.txt)。これは掲示板のようなもので、サイト所有者が「スクレイピング歓迎」ページと「禁止」ページを指定しています。倫理的なVibe Coderとして、所有者のルールを守りましょう。

次の章では、取得した冷たいCSVデータを、上司が驚く**「カラフルな可視化チャート(Data Visualization)」**に瞬時に変換する方法を教えます!

完全なチュートリアルをロック解除

このチャプターは有料コンテンツです。プロジェクトに参加して、10以上の神レベルのPromptや実際のソースコード例を含む、5000字以上の深い分析をロック解除してください!