![見出し画像](https://assets.st-note.com/production/uploads/images/62170594/rectangle_large_type_2_32e9e0a48b5ab6b91e30505a6d555528.png?width=800)
Photo by
peishum
スクレイピング(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を復元してしまえさえすれば、ログインした状態になるようです。
この記事が気に入ったらサポートをしてみませんか?