Amazonで商品を定期監視し自動購入するプログラムを書いてみた (Ubuntu編)

免責事項

本記事に記載する内容は執筆時点のもので、将来にわたって動作を保証するものではありません。Amazon.co.jpやChrome/Seleniumなどは頻繁に仕様変更があるため時間とともに仕様が変わり記載された内容では動作しなくなる可能性があります。
また本記事は自動化に関する技術を紹介するものであって、購読者の商品購入を保証するものではありません。

プログラム概要

今回作るのは特定の商品をamazon.co.jp上で特定の商品の価格を監視し希望の価格を下回った時に自動購入するプログラムを紹介します。動画はNintendo Switchの本体の価格を監視し自動購入するプログラムです。
まずは下記の動画をご覧ください。

Playstation5の自動購入も含んだソースコードでは下部で紹介しています。

準備するもの

1) Ubuntuデスクトップ環境
今回はブラウザを直接操作するのでブラウザを表示するためのデスクトップ環境が必要です。(Seleniumをheadlessで動作させることもできますが、headlessで動作させるとAmazonからボット認定されやすくなります)

2) Python3 + Selenium + Chrome + Chrome Driver
詳細は後述します。

Seleniumの準備

1) Python用Seleniumモジュールのインストール

pip3 install selenium

2) Chromeのインストール
Ubuntu用のChromeは下記でインストールできます。

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
dpkg -i google-chrome-stable_current_amd64.deb; apt-get -fy install 

3) Selenium Chrome Driverのダウンロード
Selenium用のChrome Driverはこちらからダウンロードできます。UbuntuにインストールされているChromeの版数と同じ版数のChrome Driverをダウンロードしてください。ダウンロードしたChrome Driverはこれから作成するプログラムと同じフォルダにおいてください。(別のフォルダに置いた場合は、プログラム内のChrome Driverへのパスを書き換えてください)

ASIN

目当ての商品を監視するためにASIN番号を準備する必要があります。
Amazonで販売されている商品はすべてASINと呼ばれる管理番号で管理されています。ASINは下記のように各商品のページの中に表示されていることが多いです。

画像1

ページ内に表示がない場合でもURLの中にASINが埋め込まれているので、URLを確認することで取得できます。
https://www.amazon.co.jp/dp/B07WXL5YPW/ref=sr_1_2
/dp/の直後に来ている10桁の英数字がASIN番号になります。
ASINは一度割り当てられるとめったに変わることはありませんが、ごくまれに変更される場合がありますので定期的にチェックしてください。

ソースコード

前半・後半にソースコードを分けていますが前半後半を1つのファイルに記載してください。

from selenium import webdriver
import time

URL_BASE = "https://www.amazon.co.jp/dp/{asin}"

#ご自身の監視したい商品のASINと価格に書き換えてください
ITEM_LIST = [
   #["ASINを文字列で入力", 価格を整数で入力]
   ["B07WXL5YPW", 30000],  #Nintendo Switch Neon
   ["B07WS7BZYF", 30000],  #Nintendo Switch Grey
   ["B08GGGBKRQ", 54978],  #Playstation5    ["B08GGF7M7B", 43978],  #Playstation5 Digital Edition

   ]

def _main():
   driver = open_chrome()
   for item in ITEM_LIST:
       price = check_item(driver, item)
       if price is not "" and int(price) <= item[1]:
           proceed_checkout(driver)
       time.sleep(2)

def open_chrome():
   options = webdriver.ChromeOptions()
   options.add_argument("user-data-dir=cookies") 
   #options.add_argument('--headless') #headlessで動作させる場合はこの行を有効に


   driver_path = './chromedriver' #必要に応じてパスの書き換え
   driver = webdriver.Chrome(driver_path, options=options)
   width=0
   height=0
   driver.set_window_position(height, width)
   driver.set_window_size(1280, 1000)
   return driver

def check_item(driver, item):
   url = URL_BASE.format(asin=item[0])
   driver.get(url)
   price = get_price(driver)
   return price

def proceed_checkout(driver):
   add_to_cart(driver)
   time.sleep(2)
   driver = goto_checkout(driver)
   time.sleep(2)
   driver = input_id(driver)    
   time.sleep(2)
   driver = input_passwd(driver)
   time.sleep(2)
   driver = select_address(driver)
   time.sleep(2)
   place_order(driver)
   

ここから先は

3,133字 / 2画像

¥ 980

期間限定 PayPay支払いすると抽選でお得に!

この記事が気に入ったらサポートをしてみませんか?