我正在 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 对于此类程序来说是一个非常有用的模块,但由于这似乎是唯一剩下的减速带,我希望找到我的错误。

有帮助吗?

解决方案

您收到的错误消息可能会产生误导。例如,服务器可能正在查看 用户代理 看到它说它不是受支持的浏览器之一,或者看看 HTTP_REFERER 期望它来自 Hulu 域。我的观点是,请求中有两个变量,需要一一猜测

我建议使用 http 分析工具,例如 查尔斯 或者其中的一个 萤火虫 找出当您通过浏览器进行 hulu 登录时客户端发送到服务器的内容(标头字段、cookie、参数)。这将为您提供 精确的 请求您需要在 python 代码中构建。

其他提示

你看到的是一个AJAX的回报。这可能是使用JavaScript设置cookie,而搞砸了你的验证尝试。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top