python - Why are responses from nomatim different when accessing page with browser or with requests? -
i'm fetching json data url
http://nominatim.openstreetmap.org/?q=san%20francisco&format=json&addressdetails=1&limit=1
this output when viewed on web browser
[{"display_name":"san francisco city , county, california, united states of america","class":"boundary","type":"administrative","importance":0.88836369596997,"icon":"http:\/\/nominatim.openstreetmap.org\/images\/mapicons\/poi_boundary_administrative.p.20.png","address":{"county":"san francisco city , county","state":"california","country":"united states of america","country_code":"us"}}] when fetch same url simple python program
import requests r = requests.get('http://nominatim.openstreetmap.org/?q=san%20francisco&format=json&addressdetails=1&limit=1') json_data = r.json() print json_data this get,
[{u'display_name': u'sf, california, united states of america', u'importance': 0.68836369596997, u'place_id': u'127766562', u'lon': u'-122.4629897', u'lat': u'37.7647993', u'osm_type': u'relation', u'licence': u'data \xa9 openstreetmap contributors, odbl 1.0. http://www.openstreetmap.org/copyright', u'osm_id': u'396487', u'boundingbox': [u'37.63983', u'37.9298443', u'-123.1738249', u'-122.2817799'], u'type': u'administrative', u'class': u'boundary', u'address': {u'county': u'sf', u'country': u'united states of america', u'state': u'california', u'country_code': u'us'}, u'icon': u'http://nominatim.openstreetmap.org/images/mapicons/poi_boundary_administrative.p.20.png'}] notice display_name starts sf,california, unite.....
i've tried deleting history/cookies/cache , restarting computer
what going on?
the server looks accept-language header; don't send 1 , abbreviation, send 1 stating accept english , full name:
>>> import requests >>> url = 'http://nominatim.openstreetmap.org/' >>> params = {'q': 'san francisco', 'format': 'json', 'addressdetails': 1, 'limit': 1} >>> requests.get(url, params=params).json()[0]['display_name'] u'sf, california, united states of america' >>> requests.get(url, params=params, headers={'accept-language': 'en'}).json()[0]['display_name'] u'san francisco city , county, california, united states of america' the nomatim documentation mention header used, can overridden specifying accept-language parameter in query string:
>>> print requests.get(url, params=dict(params, **{'accept-language': 'pt'})).json()[0]['display_name'] sf, califórnia, estados unidos da américa
Comments
Post a Comment