【Python初心者】PythonとSeleniumで、Chromeを使用しAmazonログインページから自動ログインしてみました。(Windows10上)
■Python
今回のPythonのバージョンは、「3.8.2」を使用しています。
■GoogleChrome
GoogleChromeのバージョンは、「81.0.4044.129(Official Build) (64 ビット)」。
■chromedriver
chromedriver-binaryのバージョンは、コマンドプロンプトから「pip install chromedriver-binary==<使っているChromeバージョン番号>」というコマンドで、インストールしたもの。
ERROR: Could not find a version that satisfies the requirement chromedriver-binary==87.0.4280.66 (from versions: 2.29.1, 2.31.1, 2.33.1, 2.34.0, 2.35.0, 2.35.1, 2.36.0, 2.37.0, 2.38.0, 2.39.0, 2.40.1, 2.41.0, 2.42.0, 2.43.0, 2.44.0, 2.45.0, 2.46.0, 70.0.3538.16.0, 70.0.3538.67.0, 70.0.3538.97.0, 71.0.3578.30.0, 71.0.3578.33.0, 71.0.3578.80.0, 71.0.3578.137.0, 72.0.3626.7.0, 72.0.3626.69.0, 73.0.3683.20.0, 73.0.3683.68.0, 74.0.3729.6.0, 75.0.3770.8.0, 75.0.3770.90.0, 75.0.3770.140.0, 76.0.3809.12.0, 76.0.3809.25.0, 76.0.3809.68.0, 76.0.3809.126.0, 77.0.3865.10.0, 77.0.3865.40.0, 78.0.3904.11.0, 78.0.3904.70.0, 78.0.3904.105.0, 79.0.3945.16.0, 79.0.3945.36.0, 80.0.3987.16.0, 80.0.3987.106.0, 81.0.4044.20.0, 81.0.4044.69.0, 81.0.4044.138.0, 83.0.4103.14.0, 83.0.4103.39.0, 84.0.4147.30.0, 85.0.4183.38.0, 85.0.4183.83.0, 85.0.4183.87.0, 86.0.4240.22.0, 87.0.4280.20.0, 87.0.4280.87.0, 87.0.4280.88.0)
ERROR: No matching distribution found for chromedriver-binary==87.0.4280.66
コマンドプロンプトで「pip install chromedriver-binary==<使っているChromeバージョン番号>」と入力しEnterキーを押すと、上記のメッセージが表示される場合は、現在使用しているGoogleChromeのバージョンと、数値の”差”が小さいものを選んで、再度「pip install chromedriver-binary==<使っているChromeバージョン番号>」と入力し、Enterキーを押します。
Collecting chromedriver-binary==87.0.4280.88.0
Downloading chromedriver-binary-87.0.4280.88.0.tar.gz (3.6 kB)
Using legacy ‘setup.py install’ for chromedriver-binary, since package ‘wheel’ is not installed.
Installing collected packages: chromedriver-binary
Running setup.py install for chromedriver-binary … done
Successfully installed chromedriver-binary-87.0.4280.88.0
Enterキーを押すと、インストールが開始され、「Successfully installed」と表示されます。これが表示されれば正常にインストールは完了となります。
■コード
import time from selenium import wbdriver import chromedriver_binary driver = webdriver.Chrome() driver.get("https://carriercentral.amazon.co.jp/request") time.sleep(5) #IDとパスワードを入力する id = driver.find_element_by_id("ap_email") id.send_keys("Amazon会員で使用しているメールアドレス") time.sleep(5) password = driver.find_element_by_id("ap_password") password.send_keys("お使いのパスワード") time.sleep(5) #ログインボタンをクリック login_button = driver.find_element_by_id("signInSubmit") login_button.click() time.sleep(10) #ウインドウを全て閉じる driver.quit()
「amazon-test.py」というファイル名で保存し、コマンドプロンプトから、Pythonで、ファイルを保存したディレクトリとファイルを指定し実行してみる。
実行すると、「windowsセキュリティの重要な警告」というウインドウが表示されます。「このアプリの機能のいくつかがWindows Defenderファイアウォールでブロックされています」と書かれており、「Pythonにこれらのネットワーク上での通信を許可する」という項目の中で、今回は「パブリックネットワーク(空港、喫茶店など)(非推奨)(U)」のチェックボックスにチェックが入っているか確認し、「アクセスを許可する(A)」ボタンをクリックします。
クリックすると、GoogleChromeが起動し、自動的にAmazonログインページにアクセスし、ログインが行われました。
■疑問点
プログラムは実行できたが、
「ERROR:browser_switcher_service.cc(238)」
「ERROR:device_event_log_impl.cc(162)」
というエラーが表示されている。
似たようなトラブルが発生している投稿(https://teratail.com/questions/252110)を見つけたが、同じようなエラーが表示されている報告が多いようなので、バージョンアップで対処されるかもしれない。(2020年4月30日記す)。
■今回のプログラムに関しての備考
Amazonログインページ(https://carriercentral.amazon.co.jp/request)へアクセスして、IDとパスワードを入力し、ログインボタンをクリック。クリック後、ウインドウを全て閉じます。所々に、sleep関数で処理を一旦停止するようにしてみました。
Seleniumで要素を選択する場合は、id属性から要素を取得するようにしています。「driver.find_element_by_id」という使用形態を使う。
AmazonログインページのID、パスワード、ログインボタンのid属性を調べてみると、
それぞれ、「ap_email」、「ap_password」、「signInSubmit」だということがわかりました。
■参考にしたページ
URL:https://qiita.com/shota-nekoneko/items/64bbd0c2f534d20e7b77
コメント