2017-10-28 6 views
0

"Web Scraping with Python"の練習例に従って、Requestsライブラリのセッションオブジェクトを使用してログイン資格情報でPOSTリクエストを作成しようとしています。しかし、私は奇妙な問題(たぶんバグ)に遭遇しました。本の著者は、テストのために、簡単なログインWebページを設定していた: http://pythonscraping.com/pages/cookies/login.html ユーザー名は、ログイン・プロセスが別のページにリダイレクトされます、「パスワード」などのパスワードを使用して、何もすることができます: http://pythonscraping.com/pages/cookies/welcome.phpPythonでWebページのログインを行うためのリクエストライブラリの奇妙な結果

import requests 
ssn = requests.Session() 
param = {'password':'password','username':'letmein'} 
r = ssn.post('http://pythonscraping.com/pages/cookies/welcome.php',data=param) 
print('Cookies set to :') 
print(r.cookies.get_dict()) 
print('Server response :') 
print(r.text) 

と上記のコードの出力は次のとおりです:私はそれに対して実行するために使用するPythonコードは以下の通りである

Cookies set to : 
{'loggedin': '1', 'username': 'letmein'} 
Server response : 
<h2>Welcome to the Website!</h2> 
Whoops! You logged in wrong. Try again with any username, and the password "password" <br><a href="login.html">Log in here</a> 

APPAログインが失敗しました。私が理解できないことはなぜですか?プログラム出力に要求によって設定されたPOST変数が示されていた場合、パスワード変数はありません。私はここで何かを見逃しているのですか、それともリクエストライブラリのバグですか?

P.S. Python 3.6.2とRequests 2.18.4でプログラムを実行しています

+0

ブラウザからログインしようとすると、同じメッセージが表示されます。リクエストライブラリにはバグがないようです。 –

+0

@ LokeshA.R。うーん....それは変だ。私もブラウザで試してみましたが問題なく動作します。 – Hapsburg

答えて

0

ブラウザでログインしようとしました。どうやらパスワードは"パスワード"ではなく、パスワードです。引用符の開始と終了はパスワードの一部です。

@PRMoureuは、URLにログインする必要があると示唆しているとは思えません。実際には、URLはhttp://pythonscraping.com/pages/cookies/welcome.phpである必要があります。実際のログイン機能はこのページに実装されているためです。

+0

本当ですか?このページに入力フィールドが表示されません – PRMoureu

+0

Hmm .... @imox二重引用符はパスワードに含まれていないと思います。パスワードに引用符を入れずにWebブラウザでログインしようとすると正しく動作します。 – Hapsburg

+0

@Hapsburg私は誓う、私はそれが二重引用符で私のために働いたと確信しています – imox