2011-01-15 8 views
1

ここはリモートサイトにログインするために使用する私のコードから切り取ってあります。 私の問題は、認証合格/不合格の結果をどのように処理するのか分かりません。pythonはurllib2とcookielibで認証し、ログインの成功/失敗の結果を取得します

def prepareLoginData(self): 
    self.post_login_data = urllib.urlencode({ 
               'login': self.user, 
               'password': self.password, 
               'Login': 'Login' 
               }) 
    return self.post_login_data 

def prepareOpener(self): 
    cj = cookielib.CookieJar() 
    self.opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
    for header in self.headers: 
     self.opener.addheaders.append(header) 
    return self.opener 

その後、私は以下のようなログイン:

self.resp = self.opener.open(self.login_page, self.post_login_data) 

と(応答self.resp.readを解析)ログインが正規表現で渡されたかどうかを確認してください。 Cookieの値に基づいてログイン結果を取得するにはどうすればよいですか?または別の方法がありますか? authが成功または失敗したとき、私がcjに表示されるのは、認証結果に関する情報を提供しないSESSIDだけです。

ありがとうございます!

+0

成功した認証と失敗した認証でself.resp.headersを表示して、違いを見つけることができるかどうか確認してください。 – TryPyPy

+0

また、authが失敗した場合、認証されたユーザーだけがアクセスしてエラーをキャッチできるリソースを要求することも考えられます。 – TryPyPy

+0

ヘッダーの唯一の違いは、 "キャッシュコントロール:no-store、no-cache、revalidate、post-check = 0、pre-check = 0"と "Cache-Control:private"が失敗した場合です。非常に良い解決策ではないようです:( – Andriy

答えて

0

多くの現代のウェブサイトでは、ページのすべてのxhtml要素にIDまたはクラスがあります。また、idまたはクラスを持つ要素には子がありますが、だから私はあなたのWebサイトからエラーメッセージを抽出するBeautifulSoupのようなxhtmlパーサーを使用することができると思います。

BeautifulSoupはverryで学びやすく使いやすいので、解決策を見つけることはできますが、そうでない場合は、私にウェブサイトのURLを教えてください。

関連する問題