3

Python 2.6 で Hulu 用の単純な HTML スクレーパーに取り組んでおり、アカウントへのログオンに問題があります。これまでの私のコードは次のとおりです。

import urllib
import urllib2
from cookielib import CookieJar
#make a cookie and redirect handlers
cookies = CookieJar() 
cookie_handler= urllib2.HTTPCookieProcessor(cookies)
redirect_handler= urllib2.HTTPRedirectHandler()

opener = urllib2.build_opener(redirect_handler,cookie_handler)#make opener w/ handlers

#build the url
login_info = {'username':USER,'password':PASS}#USER and PASS are defined
data = urllib.urlencode(login_info)

req = urllib2.Request("http://www.hulu.com/account/authenticate",data)#make the request
test = opener.open(req) #open the page
print test.read() #print html results

コードはコンパイルおよび実行されますが、出力されるのは次のとおりです。

Login.onError("Please \074a href=\"/support/login_faq#cant_login\"\076enable cookies\074/a\076 and try again.");

Cookie の処理方法に何らかのエラーがあると思いますが、それを見つけることができないようです。Mechanize はこの種のプログラムにとって非常に便利なモジュールだと聞いたことがありますが、スピード バンプが残っているのはこれだけなので、バグを見つけたいと思っていました。

4

2 に答える 2

4

あなたが見ているのは ajax リターンです。おそらくJavaScriptを使用してCookieを設定し、認証の試みを台無しにしています。

于 2009-01-16T17:33:52.340 に答える
2

返されるエラー メッセージは誤解を招く可能性があります。たとえば、サーバーはユーザーエージェントを調べて、サポートされているブラウザーの1つではないことを確認したり、huluドメインからのものであると予想してHTTP_REFERERを調べたりする可能性があります. 私のポイントは、それらを1つずつ推測し続けるために、リクエストに2つの多くの変数が来るということです

CharlesFirebugなどの http アナライザー ツールを使用して、ブラウザー経由で hulu ログインを行うときにクライアントがサーバーに送信するもの (ヘッダー フィールド、Cookie、パラメーター) を把握することをお勧めします。これにより、Python コードで構築する必要がある正確な要求が得られます。

于 2009-01-16T19:21:48.953 に答える