見出し画像

スクレイピング(Python/Selenium)でログインできないと思ったらやってみること。

スクレイピングしても自動ログインできないサイトがあった場合、Cookieを利用したら、大抵は解決できます。

例えば、

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import chromedriver_binary
import pickle

#chromedriver
driver = None

def main():

   global driver

   driver = webdriver.Chrome()
   driver.get('https://example.com/login') #対象ログインページ
   
   print("ログインしたら何か入力してください。")
   val = input()

   pickle.dump(driver.get_cookies() , open("cookies.pkl","wb"))

   driver.close()


if __name__ == '__main__':
   main()

のようなコードを書いておき、対象ログインページを開き、ログイン状態を保持、のようなチェックボックスを付けた状態でログインして、cookieを保存しておきます。

そうしておけば、本体のスクリプトでこのcookieを復元すれば、ログイン不要でスクレイピングを行うことができます。以下のように、

driver = webdriver.Chrome(chrome_options=options)

#cookieをロードする
driver.get('https://example.com/login') #対象ログインページ

cookies = pickle.load(open("cookies.pkl", "rb"))
for cookie in cookies:
   if cookie["domain"] == ".example.com":
       driver.add_cookie(.example.com); #対象ドメイン
 

driver.get('https://example.com/login')

#ログイン状態なので、あとはよしなに

サーバーはcookieでログイン状態を判断する場合が多いので、cookieを復元してしまえさえすれば、ログインした状態になるようです。


この記事が気に入ったらサポートをしてみませんか?