質問編集履歴

1 情報の追記

konan_

konan_ score 4

2020/06/02 17:05  投稿

【Python】requests、BeautifulSoupによってQiitaにログインしたい
### 前提・実現したいこと
requests、BeautifulSoupによってQiitaにログインしたいのですが
POST通信が上手くできておらず、ログインできません。
 
コードの流れとしては12行目でログインをした後  
authenticity_tokenを取得  
その後login_dataを保持した上でPOST通信によりログインしたいと思っております。  
### 発生している問題・エラーメッセージ
```
request.py:72: GuessedAtParserWarning: No parser was explicitly specified, so I'm using the best available HTML parser for this system ("html.parser"). This usually isn't a problem, but if you run this code on another system, or in a different virtual environment, it may use a different parser and behave differently.
The code that caused this warning is on line 72 of the file request.py. To get rid of this warning, pass the additional argument 'features="html.parser"' to the BeautifulSoup constructor.
 soup = BeautifulSoup(r.text)
Traceback (most recent call last):
 File "request.py", line 79, in <module>
   res.raise_for_status()
 File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/requests/models.py", line 941, in raise_for_status
   raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 500 Server Error: Internal Server Error for url: https://qiita.com/login
```
### 該当のソースコード
```python
import requests
from bs4 import BeautifulSoup
# requests でログインしてセッションクッキーを作る  
login_data = {
   'authenticity_token':"",
   'identity':'〇〇',
   'password':'〇〇',
   'commit':'Qiita にログイン'
}
session = requests.Session()
r = session.get('https://qiita.com')
soup = BeautifulSoup(r.text)
r.raise_for_status()
auth_token = soup.find(attrs={'name': 'authenticity_token'}).get('value')
login_data['authenticity_token'] = auth_token
res = session.post('https://qiita.com/login', login_data)
res.raise_for_status()
```
### 試したこと
Cromeで実際の通信の様子を確認することや
様々な参考資料を読みここまで書いたのですがここからが進みません。
おそらくとても些細なことかと思うのですが、ご教示頂きたいと思っております。
### 補足情報(FW/ツールのバージョンなど)
Mac、Python 3.8.3
  • Python

    37037 questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • POST

    738 questions

    POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

  • ログイン

    747 questions

    ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

  • Beautiful Soup

    467 questions

    Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る