我正在尝试使用此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下载文件内容?
当您在第一次导入时看到“导入:找不到命令”时,是由于解析器未使用与py文件匹配的字符编码引起的。尤其是当您在py文件中不使用ASCII编码时。
正确处理此问题的方法是在py文件顶部指定正确的编码,以匹配文件字符编码。
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import os
您使用的是基于UNIX的操作系统,例如Linux吗?如果是这样,请在脚本的顶部添加一个shebang行:
#!/usr/bin/python
在其下面你将拥有你已经拥有的其余代码(xx.py
在你的情况下).然后在终端运行相同的命令:
$ python xx.py
这应该可以正常工作,因为它现在将其解释为Python代码.然而,当从终端运行时,这无关紧要,因为python
告诉如何在这里解释它.它允许你做的是在终端外执行它,即从文件浏览器执行它.
这不是第一步与身份验证相关的问题.你import
不行.所以,尝试在第一行写这个:
#!/usr/bin/python
并暂时使用
python xx.py
对你来说这是一个解释:
>>> abc = "Hei Buddy" >>> print "%s" %abc Hei Buddy >>> >>> print "%s" %xyz Traceback (most recent call last): File "<pyshell#6>", line 1, in <module> print "%s" %xyz NameError: name 'xyz' is not defined
首先,我初始化了abc变量,它工作正常.另一方面,xyz不起作用,因为它没有初始化!