【问题标题】:Python: urllib2.HTTPError: HTTP Error 401: UnauthorizedPython:urllib2.HTTPError:HTTP 错误 401:未经授权
【发布时间】:2012-04-17 17:18:28
【问题描述】:

我试图加载一个网页,但我遇到了这个问题。我确实有用户名和密码,但我不知道如何在 python 代码中使用它们。我查了python教程,这是我写的:

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

有什么问题吗?

【问题讨论】:

    标签: python authentication


    【解决方案1】:

    这是工作代码

    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()
    

    【讨论】:

      【解决方案2】:

      我认为您可以使用 requests 模块,这会让您更轻松。

      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
      

      【讨论】:

      • 可能是因为我的 python 版本,但只是为了让其他人知道:我必须删除 r.content() 上的括号才能使其正常工作(page = r.content)。跨度>
      猜你喜欢
      • 2014-03-10
      • 1970-01-01
      • 1970-01-01
      • 2015-04-19
      • 1970-01-01
      • 1970-01-01
      • 2017-12-20
      • 1970-01-01
      • 2014-06-24
      相关资源
      最近更新 更多