18
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Python3】アマゾンがリングフィットアドベンチャーを定価で発売したら購入するスクリプト【Selenium】【BeautifulSoup】

Last updated at Posted at 2020-03-14

#転売屋に手を焼かされていませんか?
わたしは__リングフィットを手に入れて痩せる予定だった__のに、
手に入らなくて学習が手につかず、太りすぎて1年以上無職に陥ってしまいました。
という事で、今回は

スクリプトを動かすとアマゾンに自動的にログインして、
リングフィットがAmazon.co.jpが直接販売しているケースに限り購入してくれる

というスクリプトを作りました。これを自宅PCのcronやAWSのLambdaで走らせれば、
あなたはリングフィットが新品で売っているかどうかを逐一チェックする必要がなくなります。
(今回はスクリプトのみの掲載で、cronの説明は省略しています。)

cronの解説の要望があったら言って下さい。

#注意点
1.事前にクレジットカードの設定はしておいて下さい。(ギフト券で買う方はちょっと改修すれば済みます)
2.2段階認証は外しておいて下さい(リスク回避の為にサブアカウントでギフト券オンリーにするのがオススメです)

OS:Windows10
GoogleChrome バージョン: 70.0.3538.110(Official Build) (64 ビット)
Python:3.70
Selenium Webdriver:この記事を書いた時点で最新のもの
chromedriver.exe:この記事を書いた時点で最新のもの

※スクリプトと同じフォルダに'chromedriver.exe'を置いてください。

ringfit.py
from selenium import webdriver
from bs4 import BeautifulSoup
import time
import requests
import sys

driver = webdriver.Chrome()

# 欲しい商品のURL
# リングフィットアドベンチャー(本番環境時コメント外して下さい)
#driver.get('https://www.amazon.co.jp/%E4%BB%BB%E5%A4%A9%E5%A0%82-%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%95%E3%82%A3%E3%83%83%E3%83%88-%E3%82%A2%E3%83%89%E3%83%99%E3%83%B3%E3%83%81%E3%83%A3%E3%83%BC-Switch/dp/B07XV8VSZT/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%95%E3%82%A3%E3%83%83%E3%83%88&qid=1584144601&sr=8-1')

# ジョイコン(テスト用。本番環境時コメントアウトして下さい)
driver.get('https://www.amazon.co.jp/Joy-Con-L-%E3%83%8D%E3%82%AA%E3%83%B3%E3%83%91%E3%83%BC%E3%83%97%E3%83%AB-R-%E3%83%8D%E3%82%AA%E3%83%B3%E3%82%AA%E3%83%AC%E3%83%B3%E3%82%B8/dp/B07VGPSM7T/ref=sr_1_19?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=%E3%82%B9%E3%82%A4%E3%83%83%E3%83%81&qid=1584144652&sr=8-19')

page_source = driver.page_source
soup = BeautifulSoup(page_source, 'html.parser')

id_merchant_info = soup.find(id="shipsFromSoldBy_feature_div").find("a").string
print(id_merchant_info)

# 発送元がAmazon.co.jpなら購入 それ以外なら購入しない
if id_merchant_info == ("Amazon.co.jp"):
    print("買う")
else :
    print("買わない")
    sys.exit()

elem_login_btn = driver.find_element_by_xpath('//*[@id="buy-now-button"]')
elem_login_btn.click()

elem_mail = driver.find_element_by_xpath('//*[@id="ap_email"]')
elem_mail.send_keys('ID')
continue_btn = driver.find_element_by_xpath('//*[@id="continue"]')
continue_btn.click()

elem_password = driver.find_element_by_xpath('//*[@id="ap_password"]')
elem_password.send_keys('PASSWARD')
submit_btn = driver.find_element_by_xpath('//*[@id="signInSubmit"]')
submit_btn.click()

# 支払い方法(ギフト券の方はここでギフト券に切り替えて下さい)
submit_btn2 = driver.find_element_by_xpath('/html/body/div[5]/div/div[2]/div[3]/div/div[2]/div[1]/form/div[2]/div/div/div/span/span/input')
submit_btn2.click()

# お急ぎ便があるケース
submit_btn3 = driver.find_element_by_xpath('//*[@id="shippingOptionFormId"]/div[1]/div[2]/div/span[1]/span/input')
submit_btn3.click()

order_btn = driver.find_element_by_xpath('//*[@id="placeYourOrder"]/span/input')

# 購入確定ボタン(本番環境時コメントアウト外して下さい)
#order_btn.click()

今回は以上になります。何かご要望があったらご意見下さい。

18
25
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?