google colabでseleniumを使用してブラウザ操作の自動化をしようとしています。
ブラウザ操作の自動化の際にgoogleアカウントにログインしたいのですが、
colabでのseleniumでgoogleアカウントにログインする方法はあるのでしょうか。
私自身が行いたいこととして、
google マイマップの編集(ピンの色を変える、ピンのアイコンを変えるなど)の自動化がございます。
マイマップの編集にはgoogle アカウントへのログインが必要になり、seleniumを使用しようと思いますと、
どうしても冒頭の質問内容のような処理が必要になってきてしまいます。
もちろんgoogle アカウントのログイン処理を経ずに、マイマップの編集操作ができるようなライブラリなどがあれば
それでも構わないと思っております。
自身で調べた中で
ローカルのpythonの実行環境ですと、
GoogleChromeのプロフィールパスを使用してgoogleアカウントにログインした状態にできるかと思います。
colab上ですとあくまでクラウド環境ですので、GoogleChromeのプロフィールパスを使用できないのではないかと思ってしまいました。
現時点で私の中では具体的な解決策が見つかっておらず、
サンプルコードも載せられれないような状況で申し訳ございません。
colabのヘッドレスブラウザからgoogleアカウントにログインする方法、
あるいはマイマップを自動編集できる方法を
ご存知じでしたら教えて頂けますと助かります。
実行環境以下の通りです。
windows10(ローカル)
google colab
追記
colabのseleniumにてgoogleアカウントへのログインを試してみました。
メールアドレスの入力をし、「次へ」ボタンをクリックするまではできるものの、
遷移後ページで画像のようなページが表示されてしまい、ログインをブロックされてしまいます。
その際のサンプルコードを以下に記載いたします。
python
1!pip install selenium 2!apt-get update 3!apt install chromium-chromedriver 4!cp /usr/lib/chromium-browser/chromedriver /usr/bin 5 6from selenium import webdriver 7from selenium.webdriver.common.by import By 8import time 9 10options = webdriver.ChromeOptions() 11options.add_argument('--headless') 12options.add_argument('--no-sandbox') 13options.add_argument('--disable-dev-shm-usage') 14browser = webdriver.Chrome('chromedriver', options = options) 15browser.implicitly_wait(3) 16 17mailaddress = 'xxx@gmail.com' 18password = 'abcde' 19 20browser.get('https://accounts.google.com/v3/signin/identifier?dsh=S-1728033197%3A1667719904448834&continue=https%3A%2F%2Ftakeout.google.com%2F%3Fhl%3Dja&followup=https%3A%2F%2Ftakeout.google.com%2F%3Fhl%3Dja&hl=ja&osid=1&passive=1209600&flowName=GlifWebSignIn&flowEntry=ServiceLogin&ifkv=ARgdvAtuz0mFizH6_aYzDaVMfEdqdoEHh0P5jiZZ6W7ZsolkV2-v7al8G_9cDXTQTl2skc8N-RZoag') 21inputMail = browser.find_element(by = By.ID, value = 'identifierId') 22inputMail.send_keys(mailaddress) 23 24mailNextBotton = browser.find_element(by = By.XPATH, value = '/html/body/div[1]/div[1]/div[2]/div/c-wiz/div/div[2]/div/div[2]/div/div[1]/div/div/button') 25time.sleep(2) 26mailNextBotton.click() 27time.sleep(10) 28# ↑まではエラーなく実行できます。 29# ↓直後の inputPass で NoSuchElementException のエラーが出てしまいます。 30inputPass = browser.find_element(by = By.XPATH, value = '/html/body/div[1]/div[1]/div[2]/div/c-wiz/div/div[2]/div/div[1]/div/form/span/div[1]/div[1]/div/div/div/div/div[1]/div/div[1]/input') 31inputPass.send_keys(password) 32passNextBotton = browser.find_element(by = By.XPATH, value = '/html/body/div[1]/div[1]/div[2]/div/c-wiz/div/div[2]/div/div[2]/div/div[1]/div/div/button/span') 33time.sleep(2) 34passNextBotton.click()
あなたの回答
tips
プレビュー