【发布时间】:2013-01-27 10:46:57
【问题描述】:
url = "www.someurl.com"
request = urllib2.Request(url,header={"User-agent" : "Mozilla/5.0"})
contentString = urllib2.url(request).read()
contentFile = StringIO.StringIO(contentString)
对于范围内的 i (0,2):
html = contentFile.readline()
打印html
上述代码在命令行中运行良好,但如果我将其添加到 cron 作业中,则会引发以下错误:
文件“/usr/lib64/python2.6/urllib2.py”,第 409 行,在 _open
'_open',请求)
_call_chain 中的文件“/usr/lib64/python2.6/urllib2.py”,第 369 行
结果 = 函数(*args)
http_open 中的文件“/usr/lib64/python2.6/urllib2.py”,第 1186 行
返回 self.do_open(httplib.HTTPConnection, req)
文件“/usr/lib64/python2.6/urllib2.py”,第 1161 行,在 do_open
引发 URLError(err)
urllib2.URL错误:
我确实在其他论坛上看过一些技巧并尝试过,但它没有用。
任何帮助将不胜感激。
【问题讨论】:
-
我会检查以下内容: 1. 确保在两种情况下都使用相同的 python 版本和 python 路径。在程序顶部插入
print sys.version; print sys.path并比较 2. 比较环境变量(print os.environ)。检查是否存在HTTP_PROXY环境变量。 -
版本相同,并且存在 HTTP_PROXY。是这个问题吗?
-
我敢打赌这是您的代理设置的问题。 URLError:
-
但令人困惑的是在同一台机器上 python 脚本如何从命令行运行?即使这样,代理也应该引起问题吗?还是仅在我创建 cron 作业后才使用操作系统设置?
-
再次检查 HTTP_PROXY 环境变量是否被 cronjob 任务看到。从程序中执行
print os.environ并确保重定向输出,以便您可以检查该值。
标签: python urllib2 python-2.6