python-使用urllib打开HTTPS链接失败
我在使用urlib打开具有HTTPS协议的链接时遇到问题。 我在Ubuntu中运行Python2.7.1,使用家庭网络(无代理) 它会一直返回并出错,如果我改为HTTP,它就会工作,我在这里遗漏了什么 代码示例:python-使用urllib打开HTTPS链接失败,python,ubuntu,https,beautifulsoup,urllib,Python,Ubuntu,Https,Beautifulsoup,Urllib,我在使用urlib打开具有HTTPS协议的链接时遇到问题。 我在Ubuntu中运行Python2.7.1,使用家庭网络(无代理) 它会一直返回并出错,如果我改为HTTP,它就会工作,我在这里遗漏了什么 代码示例: from BeautifulSoup import * import urllib url = "https://path/file.html" html = urllib.urlopen(url).read() 返回的错误: Traceback (most recent ca
from BeautifulSoup import *
import urllib
url = "https://path/file.html"
html = urllib.urlopen(url).read()
返回的错误:
Traceback (most recent call last):
File "/home/.../links.py", line 4, in <module> html = urllib.urlopen(url).read()
html = urllib.urlopen(url).read()
File "/usr/lib/python2.7/urllib.py", line 87, in urlopen
return opener.open(url)
File "/usr/lib/python2.7/urllib.py", line 213, in open
return getattr(self, name)(url)
File "/usr/lib/python2.7/urllib.py", line 443, in open_https
h.endheaders(data)
File "/usr/lib/python2.7/httplib.py", line 1048, in endheaders
self._send_output(message_body)
File "/usr/lib/python2.7/httplib.py", line 892, in _send_output
self.send(msg)
File "/usr/lib/python2.7/httplib.py", line 854, in send
self.connect()
File "/usr/lib/python2.7/httplib.py", line 1273, in connect
server_hostname=server_hostname)
File "/usr/lib/python2.7/ssl.py", line 352, in wrap_socket
_context=self)
File "/usr/lib/python2.7/ssl.py", line 579, in __init__
self.do_handshake()
File "/usr/lib/python2.7/ssl.py", line 808, in do_handshake
self._sslobj.do_handshake()
IOError: [Errno socket error] [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)
回溯(最近一次呼叫最后一次):
文件“/home/../links.py”,第4行,在html=urllib.urlopen(url.read()中
html=urllib.urlopen(url.read())
文件“/usr/lib/python2.7/urllib.py”,urlopen中的第87行
返回opener.open(url)
文件“/usr/lib/python2.7/urllib.py”,第213行,打开
返回getattr(self,name)(url)
文件“/usr/lib/python2.7/urllib.py”,第443行,在OpenHTTPS中
h、 端头(数据)
文件“/usr/lib/python2.7/httplib.py”,第1048行,在endheaders中
自发送输出(消息体)
文件“/usr/lib/python2.7/httplib.py”,第892行,在发送输出中
self.send(msg)
文件“/usr/lib/python2.7/httplib.py”,第854行,在send中
self.connect()
文件“/usr/lib/python2.7/httplib.py”,第1273行,在connect中
服务器\主机名=服务器\主机名)
文件“/usr/lib/python2.7/ssl.py”,第352行,在wrap_套接字中
_上下文=自身)
文件“/usr/lib/python2.7/ssl.py”,第579行,在__
self.do_握手
文件“/usr/lib/python2.7/ssl.py”,第808行,在do_握手中
赛尔夫:握手
IOError:[Errno socket error][SSL:CERTIFICATE\u VERIFY\u FAILED]证书验证失败(\u SSL.c:590)
这不是最好的答案
我只有在使用不正确的SSL证书的服务器上才遇到这个问题,比如https://pygame.org/
在请求中
有禁用证书验证的选项
import requests
r = requests.get("https://pygame.org", verify=False)
html = r.content
使用验证脚本无法工作。未经验证,脚本显示警告,但有效
但是我在urllib
中没有找到这个选项,这不是最好的答案
我只有在使用不正确的SSL证书的服务器上才遇到这个问题,比如https://pygame.org/
在请求中
有禁用证书验证的选项
import requests
r = requests.get("https://pygame.org", verify=False)
html = r.content
使用验证脚本无法工作。未经验证,脚本显示警告,但有效
但是我在
urllib
中没有找到此选项。我找到了解决方案,必须设置SSL代码
我的代码中缺少此部分
import requests
import json
import ssl
scontext = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
req = urllib.urlopen(url, context=scontext)
html = req.read()
`
通过这种方式可以浏览HTTPS网站我找到了解决方案,必须设置SSL代码 我的代码中缺少此部分
import requests
import json
import ssl
scontext = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
req = urllib.urlopen(url, context=scontext)
html = req.read()
`
通过这种方式可以浏览HTTPS网站是否有完整的错误消息?可能会有更多有用的信息。我用完整的错误消息更新了它。谢谢,这是完整的错误信息吗?可能会有更多有用的信息。我用完整的错误消息更新了它。感谢Trange,我的编译器说:ImportError:没有名为requests的模块,但我已经安装了该模块(
pip3 install requests--upgrade
)pip3
为Python 3安装。使用pip
安装Python2.true,抱歉,但与pip相同:要求已经是最新的:在/usr/local/lib/python3.4/dist包中请求
我是否可能同时安装了Python2.7和3,这会造成混乱python-V返回2.7.10
您的pip
是pip3
的别名-尝试pip2
。或者编写pip
并按两次tab
查看所有以pip
开头的命令。您可以同时使用2.7和3,并且您应该使用命令python
,python2
,python2.7
,python3.4
,python3.4
,pip
,pip2
,pip2.7
,pip3
,pip3.4
:)奇怪的是,我的编译器说:ImportError:没有名为requests的模块,但我已经安装了模块(pip3 install requests--upgrade
)pip3
为Python 3安装。使用pip
安装Python2.true,抱歉,但与pip相同:要求已经是最新的:在/usr/local/lib/python3.4/dist包中请求
我是否可能同时安装了Python2.7和3,这会造成混乱python-V返回2.7.10
您的pip
是pip3
的别名-尝试pip2
。或者编写pip
并按两次tab
查看所有以pip
开头的命令。您可以同时使用2.7和3,并且您应该使用命令python
,python2
,python2.7
,python3.4
,python3.4
,pip
,pip2
,pip2.7
,pip3
,pip3.4
:)