On Tuesday, September 26, 2017 at 12:32:18 PM UTC-3, Bernie Connors wrote: > Hello, > > My first post here on C.L.P. I have only written a few python scripts > in 2.7 and now I'm trying my first python 3 script. Can you tell me why this > snippet won't run? > ----------------------- > from urllib.request import urlopen > > with > urlopen('http://geonb.snb.ca/arcgis/rest/services/GeoNB_SNB_Parcels/MapServer/0/query?outSR=4617&f=JSON&where=PID='75385120'') > as conn: > print(conn) > ----------------------- > Thanks, > Bernie.
Thomas, The PID parameter at the end of my url must be enclosed in single quotes, '75385120', or the API won't execute the query. I have the code in a python notebook on Azure - https://notebooks.azure.com/n/n31C2DSCOr8/notebooks/URLopen%20Test.ipynb Here are the error messages I am getting: --------------------------------------------------------------------------- HTTPError Traceback (most recent call last) <ipython-input-9-ec8ba282ee14> in <module>() 1 from urllib.request import urlopen ----> 2 with urlopen("http://geonb.snb.ca/arcgis/rest/services/GeoNB_SNB_Parcels/MapServer/0/query?outSR=4617&f=JSON&where=PID='75385120'") as conn: 3 print(conn) ~/anaconda3_410/lib/python3.5/urllib/request.py in urlopen(url, data, timeout, cafile, capath, cadefault, context) 160 else: 161 opener = _opener --> 162 return opener.open(url, data, timeout) 163 164 def install_opener(opener): ~/anaconda3_410/lib/python3.5/urllib/request.py in open(self, fullurl, data, timeout) 469 for processor in self.process_response.get(protocol, []): 470 meth = getattr(processor, meth_name) --> 471 response = meth(req, response) 472 473 return response ~/anaconda3_410/lib/python3.5/urllib/request.py in http_response(self, request, response) 579 if not (200 <= code < 300): 580 response = self.parent.error( --> 581 'http', request, response, code, msg, hdrs) 582 583 return response ~/anaconda3_410/lib/python3.5/urllib/request.py in error(self, proto, *args) 507 if http_err: 508 args = (dict, 'default', 'http_error_default') + orig_args --> 509 return self._call_chain(*args) 510 511 # XXX probably also want an abstract factory that knows when it makes ~/anaconda3_410/lib/python3.5/urllib/request.py in _call_chain(self, chain, kind, meth_name, *args) 441 for handler in handlers: 442 func = getattr(handler, meth_name) --> 443 result = func(*args) 444 if result is not None: 445 return result ~/anaconda3_410/lib/python3.5/urllib/request.py in http_error_default(self, req, fp, code, msg, hdrs) 587 class HTTPDefaultErrorHandler(BaseHandler): 588 def http_error_default(self, req, fp, code, msg, hdrs): --> 589 raise HTTPError(req.full_url, code, msg, hdrs, fp) 590 591 class HTTPRedirectHandler(BaseHandler): HTTPError: HTTP Error 403: Forbidden -------------------------------------- Thanks, Bernie. -- https://mail.python.org/mailman/listinfo/python-list