2012-03-27 89 views
3

我試圖用Python和JSON的谷歌地圖地理編碼器,但要被告知我有一個壞的請求:使用谷歌地圖的地理編碼器與Python的urllib2

add = "Buckingham Palace, London, SW1A 1AA" 
geocode_url = "https://maps.googleapis.com/maps/api/geocode/json?address=%s&sensor=false&region=uk" % add 
print geocode_url 
req = urllib2.urlopen(geocode_url) 
jsonResponse = json.loads(f.read()) 
pprint.pprint(nest) 

這種失敗,urllib2.HTTPError: HTTP Error 400: Bad Request

但如果我只是複製和粘貼

https://maps.googleapis.com/maps/api/geocode/json?address=Buckingham%20Palace,%20London,%20SW1A%201AA&sensor=false&region=uk 

到瀏覽器吧,它工作正常。

什麼是錯我的要求?

回答

6

你需要一些URL引用的編碼,這個工程:

import urllib2 
import pprint 
import json 
add = "Buckingham Palace, London, SW1A 1AA" 
add = urllib2.quote(add) 
geocode_url = "http://maps.googleapis.com/maps/api/geocode/json?address=%s&sensor=false&region=uk" % add 
print geocode_url 
req = urllib2.urlopen(geocode_url) 
jsonResponse = json.loads(req.read()) 
pprint.pprint(jsonResponse) 

附加= urllib2.quote(添加)是重要的一點。如果你有非拉丁字符,建議谷歌API需要UTF-8編碼。