|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
win7 python3.4
爬豆瓣电影接口 https://api.douban.com/v2/movie/in_theaters?city=%E5%B9%BF%E5%B7%9E
有时候能爬,有时候又会报错
错误信息:
- Traceback (most recent call last):
- File "C:\Python34\requests\packages\urllib3\connectionpool.py", line 589, in urlopen
- self._prepare_proxy(conn)
- File "C:\Python34\requests\packages\urllib3\connectionpool.py", line 797, in _prepare_proxy
- conn.connect()
- File "C:\Python34\requests\packages\urllib3\connection.py", line 289, in connect
- ssl_version=resolved_ssl_version)
- File "C:\Python34\requests\packages\urllib3\util\ssl_.py", line 308, in ssl_wrap_socket
- return context.wrap_socket(sock, server_hostname=server_hostname)
- File "C:\Python34\lib\ssl.py", line 364, in wrap_socket
- _context=self)
- File "C:\Python34\lib\ssl.py", line 578, in __init__
- self.do_handshake()
- File "C:\Python34\lib\ssl.py", line 805, 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 "C:\Python34\requests\adapters.py", line 417, in send
- timeout=timeout
- File "C:\Python34\requests\packages\urllib3\connectionpool.py", line 621, 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 "C:\Users\Administrator\Desktop\run\run_movie.py", line 17, in <module>
- run()
- File "C:\Users\Administrator\Desktop\run\run_movie.py", line 11, in run
- movie.remark.run()
- File "C:\Users\Administrator\Desktop\run\movie\remark.py", line 24, in run
- web = requests.get(u)
- File "C:\Python34\requests\api.py", line 70, in get
- return request('get', url, params=params, **kwargs)
- File "C:\Python34\requests\api.py", line 56, in request
- return session.request(method=method, url=url, **kwargs)
- File "C:\Python34\requests\sessions.py", line 471, in request
- resp = self.send(prep, **send_kwargs)
- File "C:\Python34\requests\sessions.py", line 581, in send
- r = adapter.send(request, **kwargs)
- File "C:\Python34\requests\adapters.py", line 491, in send
- raise SSLError(e, request=request)
- requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600)
复制代码
是不是请求的时候没有带上证书导致的呢?
网上找了一下,有一段不太懂
您也可以通过验证一个私人证书CA_BUNDLE文件的路径。您还可以设置环境变量的REQUESTS_CA_BUNDLE。
如果你设置验证设置为False,也可以忽略验证SSL证书。
>>> requests.get('https://kennethreitz.com',cert=('/path/server.crt', '/path/key'))
<Response [200]>
cert=('/path/server.crt', '/path/key') 这里的crt key,怎样才能找到本机对应豆瓣的crt和key呢 这个路径格式不太懂 请指教一下
从报错看是证书验证失败,可以关闭证书验证 verify=False
对某一特定站的爬虫建议用session来写,
session只进行一次TCP连接,可以有效的爬取。
|
|