我正在运行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()
答案 0 :(得分:1)
问题在于您install_opener
收到了HTTPNtlmAuthHandler
。当该类处理请求时,它返回HTTPResponse
而不是标准的'文件类似对象'。
要查看来源,请转到here。