首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >urllib.error.URLError:<urlopen错误未知url类型:'https>

urllib.error.URLError:<urlopen错误未知url类型:'https>
EN

Stack Overflow用户
提问于 2014-11-24 23:00:29
回答 4查看 43.5K关注 0票数 19

(Python3.4.2)当我在脚本中运行'urllib.request.urlopen(url)‘时,出现了一个奇怪的错误。如果我在Python解释器中直接运行它,它就能正常工作,但当我通过bash (Linux)在脚本中运行它时,它就不能工作了。

我猜想它与'url‘字符串有关,可能是因为我通过'string.join’方法创建了字符串。

代码语言:javascript
运行
复制
import urllib.request
url = "".join((baseurl, other_string, midurl, query))
response = urllib.request.urlopen(url)

'url‘字符串打印得很好,但是当我尝试创建'response’字符串时,我得到了如下输出:

代码语言:javascript
运行
复制
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‘字符串。我也试过这个:

代码语言:javascript
运行
复制
url = "".join(("'", baseurl, other_string, midurl, query, "'"))

有人知道怎么回事吗?

-编辑-编辑

我想通了。我的url中有一个":“,我想urllib不喜欢这样。我把它换成了"%3A“,现在它开始工作了。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-01-08 11:28:39

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

代码语言:javascript
运行
复制
>>> import urllib.parse
>>> urllib.parse.quote(':')
'%3A'
票数 14
EN

Stack Overflow用户

发布于 2015-01-07 23:47:21

我想通了。我的url中有一个:urllib不能使用这个字符。我用%3A代替了它,现在它开始工作了。Web浏览器通常会自动将:转换为%3A,但是urllib要求首先转换它。

票数 3
EN

Stack Overflow用户

发布于 2018-06-27 03:24:47

可能由于openssl-发展,如果你不安装它。

代码语言:javascript
运行
复制
yum list installed|grep openssl

安装后再试一次。

代码语言:javascript
运行
复制
sudo yum install openssl-devel
./configure
make
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27115803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档