【发布时间】:2014-04-12 02:11:33
【问题描述】:
我正在尝试使用此 Python urllib2 Basic Auth Problem 代码从需要身份验证的 URL 下载网页内容。我正在尝试的代码是:
import urllib2, base64
request = urllib2.Request("http://api.foursquare.com/v1/user")
base64string = base64.encodestring('%s:%s' % (username, password)).replace('\n', '')
request.add_header("Authorization", "Basic %s" % base64string)
result = urllib2.urlopen(request)
它在向我展示:
./xx.py: line 1: import: command not found
./xx.py: line 3: syntax error near unexpected token `('
./xx.py: line 3: `request = urllib2.Request("http://api.foursquare.com/v1/user")'
我想知道我做错了什么?我正在使用Python 2.7.5。如何从需要身份验证的 URL 下载文件内容?
【问题讨论】:
-
如果未找到导入,则与身份验证无关。能不能尝试运行python,然后一一输入每个命令?
-
要避免
.replace()调用,请使用base64.b64encode()而不是encodestring() -
你要么需要 1.) 第一行的 shebang
#!/usr/bin/env python以及脚本文件上的可执行标志,以便能够使用./xx.py运行脚本或 2.) 你必须运行带有python xx.py命令的脚本。在第二种情况下,您不需要 shebang 和可执行标志。 -
@pasztorpisti ...也就是说,如果目标是定义一个命令,shebang 和 +x 标志是正确的方法(并且脚本可能不应该有
.py扩展名全部;有关该点的更多讨论,请参阅talisman.org/~erlkonig/documents/…)。 -
@pasztorpisti ...不仅不需要,而且是有害的,因为这意味着您无法用不同的语言重新实现,而无需修改所有调用者或将其保留在现在具有误导性的位置延期。而且,正如我们在#bash 中对人们所说的那样,“你运行
ls.elf吗?”