pythonでWebスクレイピング ~ログイン処理のスキップ~
最近久しぶりにamazonのスクレイピングコードを動かしてみたらログイン処理がうまく動かなかった。
amazonに限らず、最近どんどんwebサイトの認証が厳しくなってくるなと思いつつ、対策を考えてみた。
結論から言うと、自身のchromeアカウントにseleniumでログインすると、chromeに保存されているログイン情報で各種サイトへ自動ログインしてくれる。
事前検討
今回発生した問題点は、seleniumを使ってamazonのログインURLへアクセスした際、以下のような画面が表示されパスワードを変更しなければログインできないようになっていた。
対策として、事前にamazonには手動でchromeブラウザを開きサインインしておき、サインイン情報を保持したchromeアカウントをseleniumで起動する。
うまくいけばブラウザの以下がアカウントを認識して、自分のアイコンに変わってくれるはず。
事前準備
まずは普通にchromeを起動し以下にアクセス、プロフィール パスを取得。
URL:chrome://version
取得したパス上のUser Dataフォルダをごっそりどこかにコピー。
コピーせずとも直接フォルダ指定で動かすこともできますが、ブラウザを立ち上げた状態でソースを実行しようとすると以下のようなエラーが出てきます。
既存のブラウザ セッションで開いています。
ソースコード
profilefolderに上記フォルダパスを追加するだけ。
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
profilefolder = "--user-data-dir=" + "任意のフォルダ"
options = webdriver.ChromeOptions()
options.add_argument(profilefolder)
driver = webdriver.Chrome(ChromeDriverManager().install(), options=options)
参考サイト
以下参考にさせていただきました。
最後に
制約はそのうち出てきそうですが、基本的にログイン処理をショートカットできるので応用が利きそうです。
久しぶりに過去のコードを動かそうとしてみると結構動かなかったりするので注意が必要ですね。