2012-04-17 118 views
7

我试图加载一个网页,但我遇到了这个问题。我有用户名和密码,但我不知道如何在Python代码中使用它们。我查了一下python教程,这就是我写的:Python:urllib2.HTTPError:HTTP错误401:未授权

import urllib2 

password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm() 
username = 'user' 
password = 'pass' 
top_level_url = "www.something.com:80" 
password_mgr.add_password(None, top_level_url, username, password) 
handler = urllib2.HTTPBasicAuthHandler(password_mgr) 
opener = urllib2.build_opener(handler) 
opener.open('http://www.something.com/h/h.html') 
urllib2.install_opener(opener) 
response = urllib2.urlopen() 
page = response.read() 
print page 

有什么问题吗?

回答

20

这里是工作的代码

import urllib2 

url = 'http://www.abc.com/index.html' 
username = 'user' 
password = 'pass' 
p = urllib2.HTTPPasswordMgrWithDefaultRealm() 

p.add_password(None, url, username, password) 

handler = urllib2.HTTPBasicAuthHandler(p) 
opener = urllib2.build_opener(handler) 
urllib2.install_opener(opener) 

page = urllib2.urlopen(url).read() 
5

我认为你可以使用请求模块,将使其更容易让你。

import requests 
username = 'user' 
password = 'pass' 
url = 'http://www.example.com/index.html' 
r = requests.get(url, auth=(username, password)) 
page = r.content() 
print page 
+1

可能是因为我的Python版本,但只是为了让其他人知道:我不得不删除r.content()的括号以使其工作(page = r.content)。 – 2015-01-22 08:25:30