今日はAmazonプライムデー!自動で買い物するコードを書いてみた

おはようございます。

いきなりですが、今日はAmazonプライム会員限定の大セール、プライムデーですね!

狙ってた商品がなにやら安くなりそうな予感。

でも、私会社員ですから、プライムデーのために会社休んだり、仕事中にAmazon開いて買い物したりなんてできません。そこで、Pythonで狙った商品を自動でカートに入れて、メール通知してくれるコードを書きました。

準備

seleniumを、pipでインストール

pip install selenium

chromeのドライバをDL

Downloads - ChromeDriver - WebDriver for Chrome

からchromeのドライバをDLし、適当な場所に置く。

準備は以上!サルでもできますね!


実際のコード

import os
import time
from selenium import webdriver
import datetime as dt
import done_message as msg


amazon_pass = "xxx" #Amazonのログインパスワード
amazon_id = "xxx" #ログインID
wanted = "xxx" #欲しい商品のURL
url = "https://www.amazon.co.jp/ref=nav_logo" #Amazonのurl
path = "xxx/chromedriver"   #先ほど適当なところに置いたchromeのドライバの場所
DRIVER_PATH = os.path.join(os.path.dirname(path), "chromedriver")


start_time = dt.datetime(2016, 7, 12, 8, 59, 0, 0)
end_time = start_time + datetime.timedelta(seconds=3660)
#webブラウザを操作するコードを、実行するスタートの時間と、終了の時間今回は9時ちょい前から10時まで。

now = dt.datetime.now() #この時点での時間を変数に格納。
waiting = True #状態を待ち=waitingに。

while waiting == True :
    if now >=start_time :
        waiting = False
    else :
        now = dt.datetime.now()
        time.sleep(2)
#実行時間以外では、waiting状態となる。

#上のループを抜けると、ブラウザを起動し、ログイン、所定のURLにアクセスする。
browser = webdriver.Chrome(DRIVER_PATH)
browser.get(url)
browser.find_element_by_id("nav-tools").find_element_by_id("nav-link-yourAccount").click()
browser.find_element_by_id("ap_email").send_keys(amazon_id)
browser.find_element_by_id("ap_password").send_keys(amazon_pass)
browser.find_element_by_id("signInSubmit").click()
browser.get(wanted)

#タイムセール品かの判定
time_sale = False

while now >= start_time and now <= end_time  and time_sale == False:
    if "タイムセール" in browser.page_source :
        browser.find_element_by_id("a-autoid-0-announce").click()            
        time_sale = True
        now = dt.datetime.now()
    else :
        browser.refresh()
        now = dt.datetime.now()
        time.sleep(2)
            
#send e-mail
#メールを送るコードをここに書く

昨晩やっつけで書いたコードです。バグ沢山あると思いますが、私の環境では一応動いているので、これで狙っていた商品、ゲットしたいと思います!!


結果は…

結論から言うと、失敗でした(涙)

コード自体はちゃんと動いていました。が、私が欲しかった商品、ブラーバちゃんはセール開始した瞬間カートに全部入ってしまったようです。。。

今回かなりやっつけで書いたコードだったので、次回こういうような機会があれば、狙った商品はかならず仕留める、そういうコードを書きたいものです。

ただwebブラウザをpythonで動かし、ログインの必要なサイトへ入りいろいろ行う、というタスクが出来る&その方法を学べたので、今後私のPythonライフもはかどっていきそうです!