前提
スクレイピングでサイトにログインをしたいのですが、プログラムを再起動させるたびにログインするのは、サーバーに負担がかかるので、一度ログインしたらログイン情報を維持したいです。
そのために、requestsのpostをつかって一回目のログインを試しているのですが、ログイン認証が404となり失敗します。(対象のサイトは予めログアウト済み)
実現したいこと
requestsモジュールを使ってサイトにログインをして、ログイン情報を維持する。再度ログインする際に、ログイン情報を入力する必要をなくす。
パスワードの部分は隠していますが、アルファベットと数値の文字列です。
該当のソースコード
import re import time import requests from bs4 import BeautifulSoup URL = "https://www.palmie.jp/signin" # URL = "https://www.palmie.jp/signin/sessions" # 毎回ログインすることを防ぐためセッションモードを使う session = requests.session() req_before_login = session.get(URL) bs = BeautifulSoup(req_before_login.text, 'html.parser') login_data = { 'UTF-8': '✓', 'session[email]': "*******@mail.com", 'session[password]': "*******", } authenticity_token = bs.find('input', {'name': 'authenticity_token'}).get('value') print(authenticity_token) login_data['authenticity_token'] = authenticity_token # cookieの取得 response_cookie = req_before_login.cookies print(response_cookie) #<RequestsCookieJar[<Cookie _hogehoge_session=長いので省略 # post時にcookieを追加 login = session.post(URL, data=login_data, cookies=response_cookie) time.sleep(2) bs = BeautifulSoup(login.content, 'html.parser') print('--- ログイン情報 ---') print(login_data) print('---- 認証ページへのアクセス結果 ---') print(re.search(r'<title.*', req_before_login.text).group(0)) print(req_before_login.status_code) print('--- 認証完了ページへのアクセス結果 ---') print(re.search(r'<title.*', login.text).group(0)) print(login.status_code) # 結果 -------------------------------------------- # --- ログイン情報 --- # {'UTF-8': '✓', 'session[email]': 'te2ya7724@gmail.com', 'session[password]': 'H4ya4TtY', 'authenticity_token': '35pDm+ZGSqxzeX1Sj16y9WG6hN/amb5EYxnU2IDe/L8u4nRQr5HFVzdYBAQ9LxC15aKdVSTr7E5iyceCU9l0sg=='} # ---- 認証ページへのアクセス結果 --- # <title> # 200 # --- 認証完了ページへのアクセス結果 --- # <title> # 404
試したこと
こちらのサイトhttps://qiita.com/yosshi4486/items/b906d83ad64c133254e2
を参考にaction属性にある"sessions"をURLの最後につけましたが、サイトにアクセスすらできませんでした。
login = session.post()のあとに以下を追記
print(login.raise_for_status())
以下のようなエラーが発生しました。
requests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://www.palmie.jp/
URLが見つかりませんとありますが、コピペでアクセスしたら普通に表示されます。
補足情報(FW/ツールのバージョンなど)
Win10
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/06/29 00:29