2012-07-05 53 views
4

在python中,我想发送一个请求到一个url,它会返回一些信息给我。问题是,如果我尝试从浏览器访问网址,会出现一个弹出框并要求输入用户名和密码。然而,我有这个url的用户名和密码,我不知道如何让python自动完成这些字段来访问URL。从python脚本访问受密码保护的url

这是我的代码,返回401错误:

bing = "https://api.datamarket.azure.com/Data.ashx/Bing/SearchWeb/Web?Query=% 
(term)s&$top=50&$format=json" %__function() 
results = urllib2.urlopen(bing).read() 

编辑:只是为了澄清,function返回一个名为term变量,因为它有术语在URL查询功能

回答

7

你”最有可能面临HTTP基本认证。这可以在urllib2中完成,但有点令人厌烦。如何做到这一点的说明在这里:

http://www.voidspace.org.uk/python/articles/urllib2.shtml#id5

但是,如果你还没有这样做多少工作,urllib2的,现在是一个好时机,切换到请求库。它更方便用户使用 - 并且要做的就是一行代码 - 不像urllib2中的混乱方式。如何库,可以发现请求

requests.get('https://api.github.com/user', auth=('user', 'pass')) 

更多细节:http://docs.python-requests.org/en/latest/user/quickstart/#basic-authentication

要安装请求库,你只需要做:

sudo pip install requests 

如果您使用的是Windows,你应该放下sudo部分。

+1

非常感谢,非常感谢 – adohertyd 2012-07-05 12:05:37