Python search via google module gives SSL: CERTIFI

2019-07-24 16:46发布

i'm using Python 3 on Mac OSX. python3 -version gives: Python 3.6.3

I installed the certifi package already. python 3 -m pip install certifi gives back: Requirement already satisfied: certifi in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages

When run this Code:

from google import search

for url in search('Hallo', tld='com', lang='en', num=1, stop=1):
    print(url)

It results in:

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 1318, in do_open
    encode_chunked=req.has_header('Transfer-encoding'))
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 1239, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 1285, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 1234, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 1026, in _send_output
    self.send(msg)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 964, in send
    self.connect()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 1400, in connect
    server_hostname=server_hostname)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 407, in wrap_socket
    _context=self, _session=session)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 814, in __init__
    self.do_handshake()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 1068, in do_handshake
    self._sslobj.do_handshake()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 689, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "Google.py", line 4, in <module>
    for url in search('Hallo', tld='com', lang='en', num=1, stop=1):
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/google/__init__.py", line 275, in search
    get_page(url_home % vars())
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/google/__init__.py", line 121, in get_page
    response = urlopen(request)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 223, in urlopen
    return opener.open(url, data, timeout)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 526, in open
    response = self._open(req, data)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 544, in _open
    '_open', req)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 504, in _call_chain
    result = func(*args)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 1361, in https_open
    context=self._context, check_hostname=self._check_hostname)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 1320, in do_open
    raise URLError(err)
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777)>

What's the problem?

I need an easy way, to get the URL to search for a specific string in Google.

Any ideas?

PS: I'm pretty new to python and i have googled this problem a lot. Could you please try to give an easily understandable answer?

Thank you!!

1条回答
甜甜的少女心
2楼-- · 2019-07-24 17:29

Even though this question is old, I'm answering it so people that came here with the same problem as me know how to fix this issue.

The problem has nothing to do with Google or the library. You have to navigate to the folder where Python is installed, in my case:

cd /Applications/Python\ 3.6/
open .

You can also do this with Finder. Just go to the Applications folder, search for Python.

Double-click this:

enter image description here

Then you have to double-click on Install Certificates.command.

This should solve it.

查看更多
登录 后发表回答