質問

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はこの種のプログラムにとって非常に便利なモジュールだと聞いたことがありますが、これが唯一のスピードバンプであるように思えるので、バグを見つけたいと思っていました。

役に立ちましたか?

解決

返されたエラーメッセージは誤解を招く可能性があります。たとえば、サーバーは user-agent を見て、サポートされているブラウザの1つではないと言っているか、またはhuluドメインからのものであると期待して HTTP_REFERER を見ているかもしれません。私のポイントは、1つずつ推測し続けるためにリクエストに2つの多くの変数があることです

httpアナライザーツールを使用することをお勧めします。 チャールズまたは Firebug を使用して、ブラウザ経由でhuluログインを行ったときにクライアントがサーバーに送信するもの(ヘッダーフィールド、Cookie、パラメーター)を把握します。これにより、Pythonコードで構築する必要がある exact リクエストが提供されます。

他のヒント

見ているのは、ajaxの戻り値です。おそらくJavaScriptを使用してCookieを設定し、認証の試行を台無しにしています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top