0

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

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。

4

1 回答 1

0

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

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

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

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

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

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

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

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

于 2013-08-09T13:00:10.183 回答