def query(location, cty_codes, query_method, fuzzy):
results = []
try:
base_url = get_geonames_base_url()
username = get_geonames_user_name()
query_string = base_url + 'username={user}&{query_method}={name}&' \
'style=FULL&orderby={order}&startRow=0&maxRows=5&fuzzy={fuzzy}' \
.format(user=username, query_method=query_method, name=quote(location), order='relevance', fuzzy=fuzzy)
if cty_codes and len(cty_codes) > 0:
query_string = query_string + '&' + '&'.join([('country={}'.format(c)) for c in cty_codes])
json_decode = json.JSONDecoder() # used to parse json response
response = urlopen(query_string)
response_string = response.read().decode('utf-8')
parsed_response = json_decode.decode(response_string)
if parsed_response.get('geonames') and len(parsed_response.get('geonames')) > 0:
for item in parsed_response['geonames']:
results.append(parse(item))
except URLError as e:
logger.info("Oops! something didn't go well")
logger.info(e)
return results
评论列表
文章目录