> On Oct 13, 2017, at 3:27 PM, Irv Kalb <i...@furrypants.com> wrot > If I take the same program and just modify the print statement to add > parentheses, then try to run it in Python 3.6 (on a Mac): > > ... > import urllib > > # set the Yahoo finance url, set stock name, ask for last price > fullURLWithParameters = 'http://finance.yahoo.com/d/quotes.csv?s=aapl&f=l1' > > # read all the data > response = urllib.urlopen(fullURLWithParameters).read() > > print('Response is: ', response) > > I get the following: > > Traceback (most recent call last): > File " .... s/StockQuoteYahooAPIMinimal.py", line 9, in <module> > response = urllib.urlopen(fullURLWithParameters).read() > AttributeError: module 'urllib' has no attribute 'urlopen' > >
Thanks for the responses, but I still can't get it to work correctly. With MRAB's suggestion, I've modified the code to be: from urllib import request # set the Yahoo finance url, set stock name, ask for last price fullURLWithParameters = 'http://finance.yahoo.com/d/quotes.csv?s=aapl&f=l1' # read all the data response = request.urlopen(fullURLWithParameters).read() print('Response is: ', response) But when I run that (Mac Python 3.6.1), I get: 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 401, in wrap_socket _context=self, _session=session) File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 808, in __init__ self.do_handshake() File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 1061, in do_handshake self._sslobj.do_handshake() File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 683, in do_handshake self._sslobj.do_handshake() ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/Python3 Intro Class/Module 9 - Dictionaries & Internet (not finished)/Module 9 Files/StockQuoteYahooAPIMinimal.py", line 9, in <module> response = request.urlopen(fullURLWithParameters).read() 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 532, in open response = meth(req, response) File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 642, in http_response 'http', request, response, code, msg, hdrs) File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 564, in error result = self._call_chain(*args) 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 756, in http_error_302 return self.parent.open(new, timeout=req.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:749)> Using Stefan's suggestion from 2to3: import urllib.request, urllib.parse, urllib.error # set the Yahoo finance url, set stock name, ask for last price fullURLWithParameters = 'http://finance.yahoo.com/d/quotes.csv?s=aapl&f=l1' # read all the data response = urllib.request.urlopen(fullURLWithParameters).read() print('Response is: ', response) I get the exact same traceback as above. Also, if I add a try/except around the call: # read all the data try: response = urllib.request.urlopen(fullURLWithParameters).read() except urllib.error.URLError as e: print(e) I get the same bottom line error from the traceback above: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)> Huh??? I've read a bunch of documentation, and it looks like I'm doing everything right, but I cannot get this to work. Any other suggestions to get this 3 line program to work correctly? Thanks, Irv -- https://mail.python.org/mailman/listinfo/python-list