【Python3】Amazonの商品を自動購入するボットを作ってみる

2021年11月12日

みなさま、おはこんばんにちはせなです。

今回はタイトルの通りAmazonの商品を自動で購入してくれるツールを作ってみようと思います。

環境構築

Seleniumを使用するので、以下のコマンドでseleniumをインストールしておきましょう。

pip3 install selenium

また chromedriver が必要となりますので、Homebrewを使用してこちらもインストールしておきます。

brew install chromedriver

手順

まず以下のコマンドでフォルダとファイルを作成します。(ディレクトリはどこでも良いです。amazon_botフォルダとか好きに作りましょう。)

mkdir amazon_bot
touch bot.py
vi amazon_bot/bot.py
import time
from selenium.webdriver import Chrome
# Amazonのログイン用メールアドレス
MAILADDRESS = 'xxxxx'
# Amazonのログイン用パスワード
PASSWORD = 'xxxx'
def main():
    driver = Chrome()
    login(driver)
    # login処理待ち
    time.sleep(1)
    # 商品ページに遷移
    driver.get('https://www.amazon.co.jp/dp/XXXXXXXXX')
    while True:
        try:
            # この商品は、Amazon.co.jp が販売、発送します。 のテキスト
            if len(driver.find_elements_by_id('merchant-info')) > 0:
                shop = driver.find_element_by_id('merchant-info')
                if 'Amazon' not in shop.text:
                    raise Exception('Not Amazon')
                # カートに入れる のボタン
                if  len(driver.find_elements_by_id('add-to-cart-button')) > 0:
                    # カートに入れる
                    driver.find_element_by_id('add-to-cart-button').click()
                    time.sleep(1)
                    # すぐに買う
                    driver.find_element_by_id('buy-now-button').click()
                    # 注文確定(念のためコメントアウト)
                    # driver.find_element_by_id('submitOrderButtonId-announce').click()
                    return None
                # 今すぐご予約ください のボタン
                elif len(driver.find_elements_by_id('buy-now-button')) > 0:
                    # 予約する
                    driver.find_element_by_id('buy-now-button').click()
                    time.sleep(1)
                    # 注文確定(念のためコメントアウト)
                    # driver.find_element_by_id('submitOrderButtonId').click()
                    
                    return None
                else:
                    raise Exception('Not Item')
                break
            else:
                raise Exception('Not Amazon')
        except:
            time.sleep(60)
            driver.refresh()
def login(driver):
    # Amazonのログイン画面URL
    driver.get('******')
    # ログイン処理
    login_input = driver.find_element_by_id('ap_email')
    login_input.send_keys(MAILADDRESS)
    driver.find_element_by_id('continue').click()
    password_input = driver.find_element_by_id('ap_password')
    password_input.send_keys(PASSWORD)
    driver.find_element_by_id('signInSubmit').click()
if __name__ == "__main__":
    main()

上記ファイルを作成したら、あとは実行するだけです。

python3 amazon_bot/bot.py

実行すると自動で、Chromiumが起動してAmazonのログインから商品ページまで遷移するはずです。
あとは60秒間隔で画面がリロードされ、Amazon販売の商品が購入できるか判定が行われます。

※「’chromedriver’ executable need to be on PATH」のようなエラーが出る場合があります。
その場合はPATHを正しく通す必要があります。

他にも「selenium.common.exceptions.WebDriverException: Message: Service chromedriver unexpectedly exited. Status code was: -9」のようなエラーが発生する事があります。
こちらはMacのシステムで許可が取れていないときなどに発生することがありますので、システム環境設定のセキュリティとプライバシーの一般タブからchromedriverを有効にしましょう。

最後に

今回簡単なツール作るきっかけになったのが、ポ◯モンカードが買えなかったからなんですよね。

私、子供の頃は凄くカードゲームが好きだったんですけど、
高校生辺りから忙しくてパッタリ買わなくなってたんです。
でも、最近になって熱が再燃してきたのでちょっと買いたいな〜って思ったら

まぁ、ビックリな値段で売られているんですよね。。
(これ子供とか買えないでしょ。。)

予約もできないのでなんとかしたいなって思って作ったのが今回のツールです。
一応、再販された時の戦いには勝てたので作って良かったなーって思っています。

長々と書きましたがとりあえず以上で締めさせていただきます。

ここまでお読みいただき有難うございました。
ではでは〜