2012-04-17 148 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