如何通过';https';使用python3.4登录页面?

如何通过';https';使用python3.4登录页面?,python,ssl,web-crawler,python-requests,Python,Ssl,Web Crawler,Python Requests,我正在尝试使用python3.4请求、bs4模块登录特定页面。 当我尝试使用以下代码登录时,会发生ssl错误: import requests userid = "myid" password = "mypassword" loginURL = "https://example.com/member/login" params = {'userid': userid, 'password':password} res = requests.post(loginURL, params=para

我正在尝试使用python3.4请求、bs4模块登录特定页面。
当我尝试使用以下代码登录时,会发生ssl错误:

import requests

userid = "myid"
password = "mypassword"

loginURL = "https://example.com/member/login"
params = {'userid': userid, 'password':password}
res = requests.post(loginURL, params=params, verify=True)
错误:

choejeong-us-MacBook-Pro:Desktop kris$ python a.py
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/requests/packages/urllib3/connectionpool.py", line 559, in urlopen
    body=body, headers=headers)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/requests/packages/urllib3/connectionpool.py", line 345, in _make_request
    self._validate_conn(conn)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/requests/packages/urllib3/connectionpool.py", line 782, in _validate_conn
    conn.connect()
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/requests/packages/urllib3/connection.py", line 250, in connect
    ssl_version=resolved_ssl_version)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/requests/packages/urllib3/util/ssl_.py", line 285, in ssl_wrap_socket
    return context.wrap_socket(sock, server_hostname=server_hostname)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/ssl.py", line 365, in wrap_socket
    _context=self)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/ssl.py", line 583, in __init__
    self.do_handshake()
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/ssl.py", line 810, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/requests/adapters.py", line 370, in send
    timeout=timeout
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/requests/packages/urllib3/connectionpool.py", line 588, in urlopen
    raise SSLError(e)
requests.packages.urllib3.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "a.py", line 10, in <module>
    res = requests.post(loginURL, params=params, verify=True)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/requests/api.py", line 109, in post
    return request('post', url, data=data, json=json, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/requests/api.py", line 50, in request
    response = session.request(method=method, url=url, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/requests/sessions.py", line 468, in request
    resp = self.send(prep, **send_kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/requests/sessions.py", line 576, in send
    r = adapter.send(request, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/requests/adapters.py", line 433, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600)
choejeong us MacBook Pro:Desktop kris$python a.py
回溯(最近一次呼叫最后一次):
文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site packages/requests/packages/urllib3/connectionpool.py”,第559行,在urlopen中
正文=正文,标题=标题)
文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/requests/packages/urllib3/connectionpool.py”,第345行,在请求中
自我验证连接(连接)
文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/requests/packages/urllib3/connectionpool.py”,第782行,位于
连接
文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site packages/requests/packages/urllib3/connection.py”,第250行,在connect中
ssl\U版本=已解析的\U ssl\U版本)
文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site packages/requests/packages/urllib3/util/ssl_uuu.py”,第285行,ssl_uwrap_u套接字中
返回context.wrap\u套接字(sock,server\u hostname=server\u hostname)
文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/ssl.py”,第365行,在wrap_套接字中
_上下文=自身)
文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/ssl.py”,第583行,在__
self.do_握手
文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/ssl.py”,第810行,在do_握手中
赛尔夫:握手
ssl.SSLError:[ssl:CERTIFICATE\u VERIFY\u FAILED]证书验证失败(\u ssl.c:600)
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site packages/requests/adapters.py”,第370行,在send中
超时=超时
文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site packages/requests/packages/urllib3/connectionpool.py”,urlopen中第588行
升起SSLError(e)
requests.packages.urllib3.exceptions.SSLError:[SSL:CERTIFICATE\u VERIFY\u FAILED]证书验证失败(\u SSL.c:600)
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“a.py”,第10行,在
res=requests.post(loginURL,params=params,verify=True)
文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site packages/requests/api.py”,第109行,在post中
返回请求('post',url,data=data,json=json,**kwargs)
文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site packages/requests/api.py”,请求中的第50行
response=session.request(方法=method,url=url,**kwargs)
文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site packages/requests/sessions.py”,请求中第468行
resp=自我发送(准备,**发送)
文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site packages/requests/sessions.py”,第576行,在send中
r=适配器.send(请求,**kwargs)
文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site packages/requests/adapters.py”,第433行,在send中
raise SSLError(e,请求=请求)
requests.exceptions.SSLError:[SSL:CERTIFICATE\u VERIFY\u FAILED]CERTIFICATE VERIFY FAILED(\u SSL.c:600)
如何使用ssl页面登录站点

我看了一些关于python请求模块和web抓取的书籍,没有任何书籍处理这个问题


p、 我想知道python是否真的足够强大,可以处理“所有”网页?我的意思是,我能抓取所有的网站吗?或者有一些限制?

回溯的最后一行告诉您原因:

requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600)
请求
无法验证服务器的SSL证书。您可以使用
verify
选项禁用证书验证:

res = requests.post(loginURL, params=params, verify=False)

这样做会带来安全隐患,因此是否应该这样做由您根据应用程序的要求来决定。

回溯的最后一行告诉您原因:

requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600)
请求
无法验证服务器的SSL证书。您可以使用
verify
选项禁用证书验证:

res = requests.post(loginURL, params=params, verify=False)

这样做会带来安全隐患,因此您是否应该这样做由您根据应用程序的要求来决定。

此异常是发生在所有SSL服务器上,还是仅发生在一个服务器上?此异常是发生在所有SSL服务器上,还是仅发生在一个服务器上?