ログインを伴うスクレイピング(Python3)

2020年11月1日

ログインありでスクレイピングする際のログイン方法のメモ
セッションを開始してcsrfトークン取得後に、csrfトークンとログイン情報をまとめてpostする

import requests
from bs4 import BeautifulSoup

# token取得用URL
token_url = TOKEN_URL
 
# formの送信先のURLを設定 
url = URL
 
login_info = {
  'id':ID,
  'password':PASSWORD
}
 
s = requests.session()
r = s.get(token_url)
soup = BeautifulSoup(r.text, 'html.parser')
csrf_token = soup.find(attrs={'name': '_csrf'}).get('content')
login_info['_csrf'] = csrf_token
 
res = s.post(url, data=login_info)

csrf対策用のトークンの名前はサイトによって違うので注意する
先にデベロッパーツールでログインに使用している情報を確認しておくと良い(preserverd_logを使うと見やすい)