Skip to content

Instantly share code, notes, and snippets.

@m-note
Created November 5, 2015 06:49
Show Gist options
  • Save m-note/516a2619251f9bdf1be0 to your computer and use it in GitHub Desktop.
Save m-note/516a2619251f9bdf1be0 to your computer and use it in GitHub Desktop.
import pandas as pd
import httplib2
from lxml import etree
import json
from io import StringIO
import re
import unicodedata
import time
def address_get(place_name, ward):
request = "http://maps.google.com/maps/api/geocode/json?address=" + ward + "%20" + place_name + "&sensor=false&language=ja"
try:
h = httplib2.Http('.cache') #by httplib2
response, content = h.request(request)
content = content.decode("utf-8")
jdata = json.load(StringIO(content))
results = re.search(r"日本,\s〒(?P<PostalCode>\d\d\d-\d\d\d\d)\s(?P<Address>.+?)\s(?P<Name>.+?)", jdata["results"][0]['formatted_address'])
PostalCode = results.group("PostalCode")
Address = unicodedata.normalize('NFKC', results.group("Address")) # 全角数字は半角にしておく
lat = jdata["results"][0]['geometry']["location"]["lat"]
lng = jdata["results"][0]['geometry']["location"]["lng"]
except:
PostalCode = "Error"
Address = "Error"
lat = "Error"
lng = "Error"
time.sleep(3.5) #連続での取得を防ぐ
print (PostalCode, Address, lat, lng)
return (PostalCode, Address, lat, lng)
if __name__ == "__main__":
data = pd.read_csv("yokohama_PS.csv")
for i in range(len(data)):
place_name = data.ix[i, "住所"]
ward = "横浜市港北区"
PostalCode, Address, lat, lng = address_get(place_name, ward)
data.ix[i, "郵便番号"] = PostalCode
data.ix[i, "住所"] = Address
data.ix[i, "Google緯度"] = lat
data.ix[i, "Google経度"] = lng
data.to_csv( 'yokohama_PS_G.csv', index=False )
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment