2
4

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 1 year has passed since last update.

PythonのSeleniumで楽天ラッキーくじを自動化する【ポイント不労所得】

Last updated at Posted at 2022-05-29

楽天ラッキーくじについて

楽天ラッキーくじは、無料で楽天ポイントを獲得できるお得なサービスの一つです。
くじ一覧は公式サイトにて確認することができます。

しかし、これらのくじを全て毎日手作業で引くのはとても面倒です。
そこで本記事では、Seleniumを利用して、くじ引きの自動化に挑戦しようと思います。


前提条件

私の実行環境は以下の通りです。

  • MacBook Air (M1, 2020)
  • macOS Monterey バージョン 12.3.1
  • Python 3.8.9

事前準備

  • Seleniumが利用できるPython環境を用意
  • 楽天の会員登録

必要なライブラリのインポート

使用するライブラリの事前インストールは個人で頑張ってください。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time # スリープを使うために必要
import chromedriver_binary # パスを通すためのコード
from selenium.common.exceptions import NoSuchElementException
import random

くじ引きの自動化

本プログラムではwebdriverを利用して楽天くじ公式サイトへ移動し、ログイン、そしてくじ引きの自動化を実行します。

ChromeDriverのインストール

ChromeDriver インストール方法【Mac】【Windows】を参考にパソコンへChromeDriverをインストールします。

私の場合は以下のコマンドをターミナルへ打ち込みました。
※Homebrewは事前にインストール済

brew install chromedriver

インストールしたChromeDriverのパスを指定してChromeを準備

Selenium入門 Pythonでブラウザを自動化したい方必読!を参考に、インストールしたChromeDriverのパスを確認・指定します。

※MacOSのユーザーは、私のサンプルコードをそのまま使用すれば問題ないと思います。
※一番最初の実行時のみ、システム環境設定のセキュリティにてアクセスを許可する必要があります。

#パスを指定してChromeを準備
browser = webdriver.Chrome(executable_path='/opt/homebrew/bin/chromedriver')

自動化プログラムの実行

browser.implicitly_wait(5) #ブラウザ立ち上がるまでの許容時間を5秒とする

url = "https://kuji.rakuten.co.jp/" #楽天くじ公式サイトのurl
browser.get(url)

path1 = "/html/body/div/main/section[2]/ul/li[1]/a" #1個目のラッキーくじのパス

# 1個目のラッキーくじを選択
btn = browser.find_element_by_xpath(path1)
btn.click()
time.sleep(5)

# ログイン情報入力
textbox = browser.find_element_by_id("loginInner_u")
textbox.send_keys(ID) #【変更してください】 楽天アカウントのIDを入力
time.sleep(5)

textbox = browser.find_element_by_id("loginInner_p")
textbox.send_keys(password) #【変更してください】 楽天アカウントのパスワードを入力
time.sleep(5)

# ログインボタンを押す
btn = browser.find_element_by_xpath("/html/body/div[2]/div/div/div[1]/div/form/div/p[1]/input")
btn.click()
time.sleep(5)

try:
 # くじ「Start」をクリック 
 btn = browser.find_element_by_xpath("//*[@id='entry']")
 btn.click()
 time.sleep(30)
except NoSuchElementException:
 print("- NoSuchElementException発生 - 次の処理へ")
 time.sleep(5)

    
#ログイン情報を残した状態で、次から順番にくじを引いていく
for num in range(2, 25):
 path2 = "/html/body/div/main/section[2]/ul/li[" + str(num) + "]/a"

 # 楽天ラッキーくじ トップページに移動
 browser.get('https://kuji.rakuten.co.jp/')
 time.sleep(15)

 try:
  # ラッキーくじを順番に選択
  btn = browser.find_element_by_xpath(path2)
  btn.click()
  t = random.randint(10,15)
  time.sleep(t)
  
  try:
   # くじ「Start」をクリック
   btn = browser.find_element_by_xpath("//*[@id='entry']")
   btn.click()

   t = random.randint(30,40)
   time.sleep(t)
   
  except NoSuchElementException:
   print("- NoSuchElementException発生 - 次の処理へ")
   
   t = random.randint(10,25)
   time.sleep(t)

 except NoSuchElementException:
  print("- NoSuchElementException発生 - 次の処理へ")
  t = random.randint(25,35)
  time.sleep(t)

#ブラウザを閉じる
browser.close()

注意事項

  • 今後、サイトの仕様変更等により、本記事のスクリプトが動作しない場合があります。
  • 楽天ラッキーくじを自動化ツールで引くことは本来禁止されています。
  • 不正行為と判断された場合、ポイント失効やアカウント停止の可能性もあります。
  • 全ての行為は自己責任でお願いします。
2
4
0

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
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?