我在python3.4上有一个脚本,直到我下载文件的网站决定使用https并且现在我收到错误但我无法弄清楚如何可以检索文件.
我的脚本导入以下库并使用urlretrive获取以前的文件.因为它现在转发到具有302重定向的https.我收到一些错误.
import urllib
import urllib.request
urllib.request.urlretrieve("http://wordpress.org/latest.tar.gz", "/thefile.gz")
Run Code Online (Sandbox Code Playgroud)
我的错误: -
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.4/urllib/request.py", line 178, in urlretrieve
with contextlib.closing(urlopen(url, data)) as fp:
File "/usr/local/lib/python3.4/urllib/request.py", line 153, in urlopen
return opener.open(url, data, timeout)
File "/usr/local/lib/python3.4/urllib/request.py", line 461, in open
response = meth(req, response)
File "/usr/local/lib/python3.4/urllib/request.py", line 571, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/local/lib/python3.4/urllib/request.py", line 493, in error
result = self._call_chain(*args)
File "/usr/local/lib/python3.4/urllib/request.py", line 433, in _call_chain
result …Run Code Online (Sandbox Code Playgroud) (Python 3.4.2)当我在脚本中运行'urllib.request.urlopen(url)'时,我遇到了一个奇怪的错误.如果我直接在Python解释器中运行它,它工作正常,但不是当我通过bash shell(Linux)在脚本中运行它时.
我猜它与'url'字符串有关,可能是因为我通过'string.join'方法创建字符串.
import urllib.request
url = "".join((baseurl, other_string, midurl, query))
response = urllib.request.urlopen(url)
Run Code Online (Sandbox Code Playgroud)
'url'字符串打印完美,但是当我尝试创建'response'字符串时,我得到了这个输出:
File "./script.py", line 124, in <module>
response = urllib.request.urlopen(url)
File "/usr/lib/python3.4/urllib/request.py", line 153, in urlopen
return opener.open(url, data, timeout)
File "/usr/lib/python3.4/urllib/request.py", line 455, in open
response = self._open(req, data)
File "/usr/lib/python3.4/urllib/request.py", line 478, in _open
'unknown_open', req)
File "/usr/lib/python3.4/urllib/request.py", line 433, in _call_chain
result = func(*args)
File "/usr/lib/python3.4/urllib/request.py", line 1244, in unknown_open
raise URLError('unknown url type: %s' % type)
urllib.error.URLError: <urlopen error unknown url …Run Code Online (Sandbox Code Playgroud)