2012-04-17 14 views
7

Ich habe versucht, eine Webseite zu laden, aber ich stieß auf dieses Problem. Ich habe den Benutzernamen und das Passwort, aber ich weiß nicht, wie man sie im Python-Code verwendet. Ich schaute auf Python-Tutorial, und das ist, was ich schrieb:Python: urllib2.HTTPError: HTTP Fehler 401: Nicht autorisiert

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 

Alles falsch? Hier

Antwort

20

arbeitet Code

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

Ich denke, können Sie Anfragen Modul verwenden, die es Ihnen leichter machen würde.

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

konnte wegen meiner Python-Version sein, aber nur damit andere wissen: Ich hatte die Klammern auf r.content() entfernen diese Arbeit zu bekommen (page = r.content). –

Verwandte Themen