2012-04-17 40 views
7

Tôi đang cố gắng tải một trang web, nhưng tôi đã gặp sự cố này. Tôi có tên người dùng và mật khẩu, nhưng tôi không biết cách sử dụng chúng trong mã python. Tôi nhìn lên trên hướng dẫn python, và đây là những gì tôi đã viết:Python: urllib2.HTTPError: Lỗi HTTP 401: Không được phép

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 

Bất cứ điều gì sai?

Trả lời

20

đây đang làm việc đang

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

Tôi nghĩ rằng bạn có thể sử dụng các yêu cầu mô-đun mà sẽ làm cho nó dễ dàng hơn cho bạn.

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

Có thể là do phiên bản python của tôi, nhưng chỉ để cho người khác biết: Tôi phải xóa dấu ngoặc đơn trên r.content() để làm việc này (page = r.content). –

Các vấn đề liên quan