某くじの自動化、以下を参考に。自分への備忘録
https://qiita.com/Tatsuya-code/items/b5140f24c5fb611060c2
Chrome、Edge いずれでも実行できるようにする
selenium
pip install selenium
ドライバー
chrome
https://chromedriver.chromium.org/downloads
以下のように置いています。
C:\Users\あなたのユーザー名が来るかな\Documents\ドライバー\chromedriver.exe
Edge
https://developer.microsoft.com/ja-jp/microsoft-edge/tools/webdriver/?form=MA13LH&ch=1#downloads
以下のように置いています。
C:\Users\あなたのユーザー名が来るかな\Desktop\Python\ドライバー\msedgedriver.exe
chrome python
chromeで事前ログインする。そして、以下をコードに記載しログイン状態を引き継ぐ
--user-data-dir=C:\Users\あなたのユーザー名が来るかな\AppData\Local\Google\Chrome\User Data'
- コード
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
import time
# Chromeオプションの設定
options = Options()
options.add_argument('--disable-gpu')
options.add_argument('--disable-extensions')
options.add_argument('--proxy-server="direct://"')
options.add_argument('--proxy-bypass-list=*')
options.add_argument('--no-sandbox')
options.add_argument('--lang=ja')
options.add_argument('--user-data-dir=C:\\Users\\あなたのユーザー名が来るかな\\AppData\\Local\\Google\\Chrome\\User Data')
# Chromeドライバーのパスを指定
driver_path = "C:\\Users\\あなたのユーザー名が来るかな\\Documents\\ドライバー\\chromedriver.exe"
# WebDriverサービスの設定
service = Service(executable_path=driver_path)
# Chromeドライバーの起動
driver = webdriver.Chrome(service=service, options=options)
# くじ一覧ページにアクセス
driver.get("https://rakucoin.appspot.com/rakuten/kuji/")
# くじのURLを取得
urls = driver.find_elements("xpath", "//table/tbody/tr/td/a")
url_txts = [url.get_attribute("href") for url in urls]
# くじを引く処理
for url in url_txts:
driver.get(url)
print("Accessing " + url)
if len(driver.find_elements("id", "entry")) > 0:
print("success")
time.sleep(2)
start_button = driver.find_element("id", "entry")
start_button.click()
time.sleep(20)
else:
print("failed")
time.sleep(2)
# ブラウザを閉じる
driver.close()
driver.quit()
Edge python
Edgeで事前ログインする。そして、以下をコードに記載しログイン状態を引き継ぐ
options.add_argument(r'--user-data-dir=C:\Users\あなたのユーザー名が来るかな\AppData\Local\Microsoft\Edge\User Data')
# ユーザーデータディレクトリのパス
options.add_argument('--profile-directory=Profile 2')
# 使用するプロファイルディレクトリを指定
Profileは使うやつを記載
- コード
import os
# Microsoft Edgeのプロセスを終了させる
os.system("taskkill /F /IM msedge.exe")
私は、上のようにいちいち消さないとうまく行かなかった。。
そして、以下
from selenium import webdriver
from selenium.webdriver.edge.service import Service
from selenium.webdriver.edge.options import Options
from selenium.webdriver.common.by import By
import time
# Edgeオプションの設定
options = Options()
options.use_chromium = True # ChromiumベースのEdgeを使用することを明示
options.add_argument('--disable-gpu') # GPUハードウェアアクセラレーションを無効にする
options.add_argument('--disable-extensions') # 拡張機能を無効にする
options.add_argument('--proxy-server="direct://"') # プロキシサーバーを無効にする
options.add_argument('--proxy-bypass-list=*') # すべてのアドレスでプロキシをバイパス
options.add_argument('--no-sandbox') # サンドボックスモードを無効にする
options.add_argument('--lang=ja') # 言語を日本語に設定
options.add_argument(r'--user-data-dir=C:\Users\あなたのユーザー名が来るかな\AppData\Local\Microsoft\Edge\User Data')
# ユーザーデータディレクトリのパス
options.add_argument('--profile-directory=Profile 2') # 使用するプロファイルディレクトリを指定
# Edgeドライバーのパスを指定
driver_path = r"C:\Users\あなたのユーザー名が来るかな\Desktop\Python\ドライバー\msedgedriver.exe"
# WebDriverサービスの設定
service = Service(executable_path=driver_path)
# Edgeドライバーの起動
driver = webdriver.Edge(service=service, options=options)
# ウェブサイトにアクセス
driver.get("https://rakucoin.appspot.com/rakuten/kuji/")
# くじのURLを取得
urls = driver.find_elements(By.XPATH, "//table/tbody/tr/td/a")
url_txts = [url.get_attribute("href") for url in urls]
# くじを引く処理
for url in url_txts:
driver.get(url)
print("Accessing " + url)
if len(driver.find_elements(By.ID, "entry")) > 0:
print("success")
time.sleep(2)
start_button = driver.find_element(By.ID, "entry")
start_button.click()
# 必要に応じて処理を追加
time.sleep(20) # 処理が完了するまで待機
else:
print("failed")
time.sleep(2)
# ユーザーの入力を待つ(任意)
input("結果を確認した後、何かキーを押してください...")
# ブラウザを閉じる
driver.close()
driver.quit()
という感じで、うまく行った。