gpt4 book ai didi

python-3.x - urllib.error.URLError :

转载 作者:太空宇宙 更新时间:2023-11-03 21:11:31 25 4
gpt4 key购买 nike

(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)

“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 type: 'https>

Python 在我的计算机上编译为支持 SSL(这些命令在 Python 解释器中完美运行)。

我还尝试用“repr(url)”和“str(url)”包装“url”字符串。我也尝试过这个:

url = "".join(("'", baseurl, other_string, midurl, query, "'"))

有人知道这是怎么回事吗?

-----编辑-----
我想到了。我的 url 中有一个“:”,我猜 urllib 不喜欢这样。我将其替换为“%3A”,现在它可以工作了。

最佳答案

您应该使用urllib.parse.urlencode()urllib.parse.urljoin()等函数来构造url,而不是手动连接字符串。它将处理 : -> %3A 转换,例如:

>>> import urllib.parse
>>> urllib.parse.quote(':')
'%3A'

关于python-3.x - urllib.error.URLError : <urlopen error unknown url type: 'https>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55034279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com