ウォルマート・プライス・トラッカーをゼロから作るには?

ウォルマート価格トラッカー作成

ウォルマートで定期的に買い物をする人は、ある商品がいつセールになるか、または特別オファーがあるか気になるかもしれない。毎日手作業で価格をチェックするのは面倒ですが、ちょっとしたテクニックを使ってWalmartの価格トラッカーを作成すれば、価格の変動を監視し、価格が下がったときに通知を受け取るプロセスを自動化できます。

内容 隠す

このガイドでは、データのスクレイピングや保存から、価格のモニタリングや自動アラートまで、ウォルマート価格トラッカーをステップ・バイ・ステップで構築していきます。プログラミングが初めての方でも、順を追って進めていくことができます!

ウォルマートの価格トラッカーは何ができるのか?

ウォルマートで新しいテレビを買おうと思っているが、今が買い時かどうかわからないとしよう。毎日手作業で価格をチェックするのは時間がかかる。そこで便利なのが価格追跡ツールだ。

  • 24時間365日、商品価格を自動監視。

  • 過去の価格動向を記録しておく。

  • 価格が下がったら、EメールまたはSMSで即座にお知らせします。

トラッキングを始めるために必要なもの

作業に入る前に、以下の道具を用意しておくこと:

  1. パイソン (推奨バージョン3.8以上) - スクリプトの記述と実行用

  2. コードエディタ (VSコードまたはPyCharm) - コーディングをより簡単に、より効率的にします。

  3. ウォルマート開発者アカウント (オプション) - 公式APIを使用することで、より安定します。

  4. プロキシIP (オプション) - 頻繁なリクエスト時にブロックされるのを防ぎます。

必要なPythonライブラリのインストール

ターミナルかコマンドプロンプトを開き、以下のコマンドを実行する:

pip install requests beautifulsoup4 selenium pandas schedule smtplib

ブラウザ・オートメーションを使用する場合は、次のファイルもインストールする必要がある。 クロムドライバー または ヤモリドライバーブラウザによって異なります。

ウォルマートの商品価格を入手する方法

方法1:ウォルマート公式API(推奨)

ウォルマートは、商品データを直接取得できる開発者向けAPIを提供している。

ステップ1:APIキーの取得

ウォルマート開発者ポータルをご覧ください。

公式apiでwalmartの価格トラッカーを構築する

アカウントを作成し、APIキーを申請してください(承認には時間がかかる場合があります)。

ステップ2:Pythonを使って価格を取得する

輸入リクエスト

api_key = "あなたの_scraperapi_key"
PRODUCT_URL = "https://www.walmart.com/ip/123456789" # 商品のURLで置き換えてください。

def get_price():  
    レスポンス = requests.get(
        f "http://api.scraperapi.com?api_key={API_KEY}&url={PRODUCT_URL}"
    )  
    # HTMLから価格を取り出す(単純化した例)
    return "29.99" # 実際の解析ロジックに置き換える

価格 = get_price()
print(f "現在の価格: ${price}") 

この方法はテーブルで、合法的で、ブロックされる可能性は低いが、APIアクセスが必要で、レート制限があるかもしれない。

方法2:ウェブクローラーでスクレイピングする(代替手段)

APIを使いたくない場合は、以下のようなツールを使うことができる。 セレン または ビューティフル・スープ を使用して、商品ページから直接価格を取得します。

例Seleniumを使って商品ページから自動的に価格を抽出する

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# ヘッドレスブラウザをセットアップする(ウィンドウを開かずに実行する)
オプション = オプション()
options.add_argument("--headless")
driver = webdriver.Chrome(options=options)

product_url = "https://www.walmart.com/ip/123456789" # 製品URLに置き換える
driver.get(product_url)

# 価格要素を見つける(XPathを微調整する必要があるかもしれません)
price_element = driver.find_element("xpath", '//span[@itemprop="price"]')
price = price_element.text
print(f "現在の価格: {price}")

driver.quit() # ブラウザを閉じる

ウォルマートにはスクレイピング防止機能があり、頻繁なリクエストはIPをブロックされる可能性がある。このように time.sleep(5) また、信頼性を高めるために、プロキシIPをローテーションさせることを推奨する。

ウォルマート・スクレイピング検知バイパス【オプション

1つのIPアドレスに対する推奨リクエスト頻度は以下の通りです。 1分間に1回まで を使用すれば、ボット対策が発動することはありません。したがって、ウォルマートのページを頻繁に訪問し、スクレイピングする場合は、次のようなプロキシを使用する必要があります。 クリーンIP フラグを立てられたり、IPバンを受けたりしないためには、UAを定期的に変更することが不可欠です。ここでは、ウォルマートの価格トラッカー設定を管理し、最適化する方法を説明します。

(1) 代理プール管理

あなたのIPアドレスは、スクレイピングリクエストが多すぎて一時的にブロックされ、403 Forbiddenエラーになるかもしれない。また、ウォルマートの商品価格は地域によって異なる可能性があり、例えば、米国とカナダのユーザーは同じ商品でも異なる価格が表示される可能性があるため、何百万ものIPをローテーションさせる膨大なプロキシプールが必要になる。

OkeyProxyの印象的なネットワーク 200カ国以上、150M以上のリアルIPを提供。スクレイピングとトラッキングデータのための自動IPローテーションを含む、すべてのデバイスとユースケースをサポートしています。このプロキシサービスは、競争力のある価格を提供し、住宅用プロキシスクレイパーのトップピックとして位置づけています。$3/GBのプロキシトライアルを提供しており、すべてのユーザーがプロキシのスクレイピングの信頼性、スピード、汎用性を体験することができます。

# プロキシプール - 自分のプロキシIPに置き換える
プロキシプール = [
    "http://45.123.123.123:8080",
    "http://67.234.234.234:8888",
    "http://89.111.222.333:3128"
]

# プールからランダムにプロキシを選択し、検証する
def rotate_proxy():
    while True:
        proxy = random.choice(PROXY_POOL)
        if check_proxy(proxy):
            プロキシを返す
        else:
            print(f "Proxy {proxy} is not available, trying another...")
            PROXY_POOL.remove(プロキシ)
    raise Exception("有効なプロキシがプールに残っていません。")

# テストリクエストでプロキシが動作しているかチェックする
def check_proxy(proxy):
    try:
        test_url = "https://httpbin.org/ip"
        response = requests.get(test_url, proxies={"http": proxy}, timeout=5)
        return response.status_code == 200
    ただし
        return False

(2) ボット対策

リクエストヘッダのランダム化

ボットとして検出されないようにするには、リクエストごとにUser-Agentをローテーションしてください:

from fake_useragent import UserAgent

ua = UserAgent()
headers = {"User-Agent": ua.random}。

リクエスト間にランダムディレイを追加する

リクエストの間に遅延を導入することで、人間の行動を模倣することができる:

インポート時間
インポート・ランダム

time.sleep(random.uniform(3, 10)) # 次のリクエストまで3~10秒待つ。

これらの戦略は、ブロックされるリスクを減らし、スクレーパーの信頼性を長期的に向上させるのに役立つ。

ウォルマート商品価格履歴の保存

価格を取得した後は、それを保存しておくことが重要で、そうすることで、時間の経過とともに過去の傾向を追跡することができる。

方法1:SQLiteデータベースにデータを保存する

sqlite3 をインポートする
from datetime import datetime

# データベースを作成するか、データベースに接続します。
conn = sqlite3.connect("walmart_prices.db")
カーソル = conn.cursor()

# テーブルが存在しない場合は作成する
カーソル.execute('')
    CREATE TABLE IF NOT EXISTS prices (
        product_id TEXT、
        価格REAL、
        日付 TEXT
    )
''')

# 新しい価格データを挿入する
cursor.execute("INSERT INTO prices VALUES (?, ?, ?)"、
               (product_id, price, datetime.now()))
conn.commit()
conn.close()

Walmart.comをスクレイピングした後、データをローカルのSQLiteデータベースに保存するのは軽量で、追加のソフトウェアをインストールする必要もなく、自動的にファイルを作成する。

方法2:CSVファイルにデータを保存する(もっと簡単)

pandas を pd としてインポート
from datetime import datetime

データ = {
    "product_id":[product_id]、
    「価格":[価格]、
    "date":[datetime.now()]。
}

df = pd.DataFrame(data)
df.to_csv("prices.csv", mode="a", header=False) # 付加モード

より高度なクエリーにはデータベースを使い、シンプルにはCSVを使う。

ウォルマート価格追跡のアラート毎日

1.特定のルートでウォルマートの価格をチェックする

を使用する。 スケジュール ライブラリを使用して、毎日特定の時間に価格チェックスクリプトを自動的に実行します:

インポートスケジュール
インポート時間

def check_price():
    # スクレイピングと価格チェックのコードをここに置く
    print("価格をチェックしています...")

# タスクを毎日9:00に実行する
schedule.every().day.at("09:00").do(check_price)

while True:
    schedule.run_pending()
    time.sleep(60) # スケジュールされたタスクを毎分チェックする

2.値下がり時にメールでお知らせ

インポート smtplib
from email.mime.text import MIMEText

def send_email(price):
    送信者 = "[email protected]"
    受信者 = "[email protected]"
    パスワード = "your_email_password_or_app_password"

    msg = MIMEText(f "商品価格が下がりました!最新価格:${価格}")
    msg["Subject"] = "ウォルマート価格アラート"
    msg["From"] = 送信者
    msg["To"] = 受信者

    smtplib.SMTP("smtp.gmail.com", 587) as server:
        server.starttls()
        server.login(sender, password)
        server.sendmail(sender, receiver, msg.as_string())

そして check_price() 関数を使用して、価格がターゲットより下にあるときにアラートをトリガーします:

if price = 100: # 希望する価格のしきい値を設定する。
    send_email(価格)

ウォルマート・プライス・トラッカーのクラウド展開

Walmart 価格トラッカーを継続的またはスケジュールされた時間に実行したい場合は、以下のいずれかのオプションを使用してスクリプトをクラウドにデプロイできます:

  • GitHub アクション - 無料で、1日1回スクリプトを実行するのに最適。

  • クラウドサーバー (AWS、Azureなど) - リアルタイムのモニタリングに最適

  • PythonAnywhere - 無料版には制限があるが、初心者に優しい

こちらは、ウォルマートの価格追跡の後、スクレイピングツールをGithubにアップロードした例である。

GitHubでWalmartの価格トラッカーをスケジュールする

まず GitHubリポジトリ.

そして、次のように加える。 .github/workflows/tracker.yml:

名称:ウォルマート・プライス・トラッカー

をご利用ください:
  スケジュール
    - cron: "0 14 * * *" # 2 PM UTC (タイムゾーンに合わせて調整)

ジョブを実行します:
  run-tracker:
    実行環境: ubuntu-latest
    ステップ
      - uses: actions/checkout@v4
      - という名前になります:ラントラッカー
        実行: python tracker.py

ウォルマートの商品価格を追跡するボーナス機能

1.複数のウォルマート・イテンのデータを監視し、スクレイピングする

複数の製品をリストに保存してループさせることで、簡単に追跡することができます:

product_list = [
    {"id":"123456789", "name":「ワイヤレスイヤホン", "threshold":50},
    {"id":"987654321", "name": "スマートウォッチ", "threshold": "50":「スマートウォッチ」、「しきい値200}
]

def monitor_multiple_products():
    for product in PRODUCT_LIST:
        price = get_price(product["id"])
        if price = product["threshold"]:
            send_email(f"{product['name']} just dropped to ${price}!")

この方法なら、あなたがウォッチしているアイテムごとに別々のアラートを受け取ることができ、大きなセールイベント時にはとても便利です!

2.保存されたトラッキングデータから価格動向を可視化

価格の経年変化を分析したいですか?価格データをCSVやSQLiteデータベースに保存している場合は、以下の方法で過去のトレンドをプロットするだけです。 パンダ そして matplotlib:

import pandas as pd
import matplotlib.pyplot as plt
インポート sqlite3

def plot_price_history():
    # SQLite データベースからデータをロードします(CSV ファイルの場合は pd.read_csv を使用できます)。
    conn = sqlite3.connect('walmart_prices.db')
    df = pd.read_sql_query("SELECT * FROM prices", conn)
    conn.close()

    # 日付カラムをdatetime形式に変換する。
    df['date'] = pd.to_datetime(df['date'])

    # オプション: 特定の商品のフィルタリング
    product_id = "123456789"
    product_df = df[df['product_id'] == product_id].

    # プロット
    plt.figure(figsize=(10, 5))
    plt.plot(product_df['date'], product_df['price'], marker='o', linestyle='-')
    plt.title(f "商品{product_id}の価格推移")
    plt.xlabel("日付")
    plt.ylabel("価格 (USD)")
    plt.grid(True)
    plt.xticks(rotation=45)
    plt.tight_layout()
    plt.savefig("price_history.png")
    plt.show()

この機能を毎週実行するようにスケジュールし、自動的に受信トレイにチャートを送信することもできる!

3.ウォルマート・プライス・トラッカーのウェブ・ダッシュボードを構築する

シンプルなウォルマート・プライス・トラッカー・パネルは、以下の方法で作成できます。 フラスコ または ストリームライト 商品価格とトレンドをウェブ・インターフェイスに表示する。

例えば、FlaskはHTMLテンプレートを提供しており、現在の価格や(画像やチャートとして)過去のトレンドなどを表示することができます。以下に基本的な例を示します:

from flask import Flask, render_template
pd として pandas をインポート
インポートsqlite3

app = Flask(__name__)

app.route("/")
def index():
    conn = sqlite3.connect("walmart_prices.db")
    df = pd.read_sql_query("SELECT * FROM prices", conn)
    conn.close()

    latest_prices = df.sort_values("date").groupby("product_id").last().reset_index()
    return render_template("index.html", data=latest_prices.to_dict(orient="records"))

その後、商品価格を表示するシンプルなHTMLテンプレート(templates/index.html)を作成する。

フラスコウォルマート価格追跡htmlテンプレート

よくある質問(FAQ)

Q1: スクレイパーがブロックされるのはなぜですか?

短時間に多くのリクエストを送りすぎです。使用方法 エリート・プロキシ でIPアドレスをローテーションし、各リクエストの間にランダムなディレイを追加することで、レート制限にぶつからないようにしている:

time.sleep(random.randint(2, 5)) # 次のリクエストまで2~5秒待つ。

Q2: プロダクトIDはどうやって見つけるのですか?

ウォルマートの商品ページにアクセスし、URLの/ip/の後に続く数字が商品IDです。例えば

https://www.walmart.com/ip/123456789 →プロダクトIDは123456789

Q3: 複数の製品を同時に追跡できますか?

はい!製品IDのリストを作成し、それらをループするだけです:

product_list = ["123", "456", "789"].

for product_id in product_list:
    price = get_price(product_id)
    save_price(product_id, price)

また、これを拡張して、各商品の価格が下がった場合に個別にアラートを送信することもできます。

まとめ

以上です!24時間365日価格を監視し、値下がりがあれば即座にお知らせする、完全自動のウォルマート価格トラッカーが完成しました。

walmart.comの価格トラッカーを大規模に導入した場合、Walmartのrobots.txtガイドラインを尊重することが重要です(ルールはこちらそして プロキシIPのローテーション それに応じて

カスタムメイドのウォルマート価格トラッカーがあれば、寝ている間に価格をチェックでき、もうお買い得商品を見逃すことはありません!

さらに詳しく

一流のSocks5/http(s)プロキシ・サービス

  • スケーラブルなプラン静的プラン居住者用プロキシのローテーション
  • シームレスな統合:Win/iOS/Android/Linux
  • 高いセキュリティ:アンチディテクトブラウザ、エミュレータ、スクレーパーなどに最適。
  • 信頼性の高いパフォーマンス:高速転送と低遅延
無料体験アローライト
24時間365日のカスタムサービス
150 M+ IPアドレス
都市/LSP ターゲティング
APIサポート