urllib2.urlopen返回没有info()或geturl()方法的对象

时间:2011-06-24 20:28:05

标签: python http urllib2 httpresponse

我正在运行Python 2.7.1并尝试使用urllib2模块访问某些网页。根据Python文档,urllib2.urlopen()

  

此函数返回一个类似文件的对象,有两个额外的方法,   geturl()info()

但是,当我尝试在代码中的最后一个print语句中访问info()时,它表示没有这样的方法。我收到以下错误:

AttributeError: HTTPResponse instance has no attribute 'info'

我不明白这一点。我在Google上找不到任何内容,文档清楚地说明这些方法与返回的对象一起存在。有趣的是,正如通过错误和测试方法所表明的那样,它返回一个HTTPresponse对象与这些相应的方法。我错过了什么?

我的代码如下:

import urllib2 
import httplib, socket 
import cookielib
import ntlm 
from ntlm import ntlm 

url = URLOFSOMESORT
user = USERNAMEHERE
password = PASSWORD 
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
data = ""
headers = { 'User-Agent' : user_agent }

passman = urllib2.HTTPPasswordMgrWithDefaultRealm() 
passman.add_password(None, url, user, password) 

cookie_jar = cookielib.CookieJar() 
cookie_handler = urllib2.HTTPCookieProcessor(cookie_jar)
redirect = urllib2.HTTPRedirectHandler()
auth_basic = urllib2.HTTPBasicAuthHandler(passman) 
auth_digest = urllib2.HTTPDigestAuthHandler(passman) 
auth_NTLM = HTTPNtlmAuthHandler(passman) 

opener = urllib2.build_opener(cookie_handler, auth_NTLM, auth_basic, auth_digest, redirect)
urllib2.install_opener(opener) 
request = urllib2.Request(url, data, headers)
response = urllib2.urlopen(request) 
#cookie_jar.extract_cookies(response, request)

print response.info()

1 个答案:

答案 0 :(得分:1)

问题在于您install_opener收到了HTTPNtlmAuthHandler。当该类处理请求时,它返回HTTPResponse而不是标准的'文件类似对象'。

要查看来源,请转到here