【问题标题】:HTTPError: HTTP Error 401: basic auth failed. Bing SearchHTTPError:HTTP 错误 401:基本身份验证失败。必应搜索
【发布时间】:2013-08-09 12:22:31
【问题描述】:

我已经编写了一个代码来从必应搜索中获取网址。它给出了上面提到的错误。

import urllib
import urllib2
accountKey = 'mykey'
username =accountKey
queryBingFor = "'JohnDalton'"
quoted_query = urllib.quote(queryBingFor)

rootURL = "https://api.datamarket.azure.com/Bing/Search/"
searchURL = rootURL + "Image?$format=json&Query=" + quoted_query
password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
password_mgr.add_password(None, searchURL,username,accountKey)

handler = urllib2.HTTPBasicAuthHandler(password_mgr)
opener = urllib2.build_opener(handler)
urllib2.install_opener(opener)
readURL = urllib2.urlopen(searchURL).read()

我已经创建了用户名 = authKey,正如有人告诉我的那样,两者必须相同。无论如何,当我创建必应网站管理员帐户时,我没有获得用户名。或者它只是我的电子邮件。如果我犯了新手错误,请原谅。我刚刚开始使用 Python。

【问题讨论】:

    标签: python authorization bing


    【解决方案1】:

    在没有任何其他信息的情况下,如果本网站确实需要这种形式的授权,那么实际上您的用户名和密码似乎不太可能相同。

    您是否可以通过在浏览器中执行如下请求来使其工作?

    https://mykey:mykey@api.datamarket.azure.com/Bing/Search/Image?$format=json&Query=blah

    如果是这样,那么至少听起来凭据是正确的,并且您在 python 中使用它们的方式是错误的,但上述操作很可能会因相同的错误而失败,这表明凭据本身无效。

    另请参阅此问题,这表明可能存在问题是该站点不执行“标准”身份验证:urllib2 HTTPPasswordMgr not working - Credentials not sent error

    它还建议您可能需要将站点的顶级 URL 传递给密码管理器,而不是特定的搜索 URL。

    最后,可能值得修改这段代码: http://www.voidspace.org.uk/python/articles/authentication.shtml

    让您的网站检查网站发送给您的身份验证领域和方案,以检查它们是否受支持。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-22
      • 2013-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-02
      • 1970-01-01
      相关资源
      最近更新 更多