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

您收到的错误消息可能具有误导性。例如,服务器可能正在查看用户代理并看到它不是受支持的浏览器之一,或者查看HTTP_REFERER期望它来自 hulu 域。我的观点是请求中有两个很多变量来不断猜测它们

我建议使用 http 分析器工具,例如CharlesFirebug中的工具来确定当您通过浏览器进行 hulu 登录时客户端向服务器发送的内容(标题字段、cookie、参数)。这将为您提供您需要在 python 代码中构建的确切请求。

于 2009-01-16T19:21:48.953 回答