4
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ユーザーIDとパスワードが必要なホームページにpythonでアクセスする

Last updated at Posted at 2018-11-08

##背景
とあるサイトからPDFをダウンロードするために、そのサイトにIDとパスワードを入力する必要があった。
参考にした記事がいくつかある。

Pythonでのウェブサイトへのログイン
【Python3】ログイン機能付サイトでスクレイピング【requests】【BeautifulSoup】
Pythonのrequestsモジュールでログインしようとしたらうまくいかなかった話

本命のサイトではまだ試していないが、「小説家になろう」にログインすることに成功した。注意点を含めてコードを載せる。


import requests

# メールアドレスとパスワードの指定
USER = "各個人のID"
PASS = "各個人のパスワード"

# セッションを開始
session = requests.Session()

# ログイン情報
login_info = {
    "narouid":USER,
    "pass":PASS
}

#htmlにあるformタグを考慮したURL
url_login = "https://ssl.syosetu.com/login/login/"
p = session.post(url_login, data=login_info)

#ブラウザに表示されているURL
r = session.get("https://ssl.syosetu.com/login/input/")

ログインするためには二つのURLが必要になる。
一つはログインページのブラウザに表示されているURL。
もう一つはhtmlの form action="xxx" method="post" の部分を考慮したURL。

小説家になろうにあるformタグのコードは


<!-- URL -->
<form action="/login/login/" method="post">
<dl>
<dt>IDまたはメールアドレス</dt>

<!-- ID -->
<dd><input name="narouid" type="text">
</dd>

<dt>パスワード</dt>
<dd>
<!-- password -->
<input size="20" name="pass" type="password"><br>


このようになっている。

ログイン情報をPOSTするURLは、小説家になろうだと、末尾に/login/login/で書き換えないといけない。
ログインページのURLが

前:https://ssl.syosetu.com/login/input/
後:https://ssl.syosetu.com/login/login/

と変更しないと、ただしくデータが送信されない。
IDとパスワードのinputタグのnameが正しいことを確認して、再度https://ssl.syosetu.com/login/input/ でアクセスすれば、ログインできているはずである。

大切なのはPOSTするURLとログインするURLが異なることに注意することだと思う。

4
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?