質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Google マップ

Google Mapは、Google社がオンラインで提供している地図・ローカル検索サービスです。GIS(Geographic Information System:地理情報システム)の中の「WebGIS」に該当します。地図・航空写真・地形の表示方式があり、それぞれユーザーが縮尺を調整して表示させることができます。地域の情報サービスを検索する機能やルート検索の機能も搭載されています。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

0回答

700閲覧

colab selenium googleアカウント ログイン (google マイマップの自動処理)

tttkkk

総合スコア38

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Google マップ

Google Mapは、Google社がオンラインで提供している地図・ローカル検索サービスです。GIS(Geographic Information System:地理情報システム)の中の「WebGIS」に該当します。地図・航空写真・地形の表示方式があり、それぞれユーザーが縮尺を調整して表示させることができます。地域の情報サービスを検索する機能やルート検索の機能も搭載されています。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

0クリップ

投稿2022/11/06 04:59

編集2022/11/08 21:05

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()

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2022/11/06 05:58

> 現時点で私の中では具体的な解決策が見つかっておらず、 実際のエラーメッセージを提示いただけないでしょうか?
tttkkk

2022/11/06 07:28

申し訳ございません。 様々なサイトで下記のようなログインブロックが紹介されており、 まだ私自身がcolabでseleniumを用いてgoogleアカウントにログインを試みておりませんでした。 https://xn--eckl3qmbc2cv902cnwa746d81h183l.com/instructor-blog/211007how-to-login-to-google-with-python-selenium/ 確かにmeg_様のおっしゃる通り、まずは自分で試みてみるべきですね。 早々に試して、エラーを把握するようにいたします。
tttkkk

2022/11/06 09:06

meg_様 colabにてgoogleアカウントへのログインを試みまして、 出てしまったエラーメッセージを記載いたしました。 ご教授お願いできないでしょうか。
meg_

2022/11/06 11:36

> # ↑まではエラーなく実行できます。 上記ということはGoogleアカウントにはログインできている、という理解で良いでしょうか? > NoSuchElementException 上記についてはその要素がないと思われます。browser.page_source でソースを確認してはどうでしょうか?
tttkkk

2022/11/06 12:02

私の説明が足りず申し訳ございません。 ログインができているのではなく、 本来のページであれば、メールアドレスを入力してからパスワード入力のページに遷移するのですが、 seleniiumでの操作ですと、投稿した内容のページに遷移してしまいます。 つまりブロックされてしまっているため、NoSuchElementException というエラーメッセージが出てしまいます。 もしブロックされずパスワード入力のページに遷移できるのであれば、NoSuchElementException というエラーは吐かないのだと思います。
meg_

2022/11/06 13:00

実際にどのような画面(html)が返ってきているかは確認されていますか?添付画像は実際のものではないですよね?ヘッドレスモードでのスクレイピングを拒否するサイトも存在しますがそこはクリアしていますか?(Googleはスクレイピングを許可していないかと思います。法的にアウトかどうかとはまた別の話です。)
tttkkk

2022/11/06 22:48

meg_様 度々申し訳ございません。 画像についても説明の足りない補足で申し訳ございません。 画像につきましては、ご指摘の通りcolab上ではヘッドレスブラウザですので、 ローカル環境(jupyter lab)にて同様のコードを実施し、実際に表示された画面を載せました。 またhtmlも確認してみまして、colabでのseleniumでもローカル環境でのseleniumでも同じhtmlが表示されておりました。 全htmlを比較したわけではないのですが、どちらのhtmlにも画像に記載あります 「ログインできませんでした」、「このブラウザまたはアプリは安全でない可能性があります。 詳細」、「別のブラウザをお試しください。サポートされているブラウザをすでに使用している場合は、もう一度ログインをお試しください。」、「再試行」 といった文言がありましたので、colabのseleniumでも画像と同じページが表示されていると考えております。 そしてgoogleがヘッドレスモードでのスクレイピングを拒否している場合の 対策は何も行っておりませんでした。 おそらく現状、投稿内容のような質問をしている時点で私は対策を何もできていないということになります。 その対策については私自身でもより調べてみるのですが、 meg_様におかれましては、何かその対策というのはご存知でしょうか。
meg_

2022/11/06 23:28

GoogleはAPIがあるかと思います。tttkkkさんがやりたいことを実現できるかは分かりませんが一度検討されてみてはどうでしょうか?
tttkkk

2022/11/08 12:05

meg_様 色々とご教授いただきありがとうございます。 APIについても調べてはみたのですが、おそらくできないのではないかという結論に至りました。 ひとまずローカルのpythonで我慢していこうと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問