import json
from urllib.request import urlopen, quote
import pandas as pd
import pymysql
import numpy as np
pymysql.converters.encoders[np.float64] = pymysql.converters.escape_float
pymysql.converters.conversions = pymysql.converters.encoders.copy()
pymysql.converters.conversions.update(pymysql.converters.decoders)
# 使用 cursor() 方法创建一个游标对象 cursor
connect=pymysql.connect(
host="127.0.0.1",
database="your database name",
passwd="your passward",
user="root",
port=3306,
charset='utf8mb4'
)
cursor = connect.cursor()
def getlnglat(address):
url = 'http://api.map.baidu.com/geocoder/v2/'
output = 'json'
# 浏览器端密钥
ak = 'your ak'
address = quote(address) # 由于本文地址变量为中文,为防止乱码,先用quote进行编码
uri = url + '?' + 'address=' + address + '&output=' + output + '&ak=' + ak
req = urlopen(uri)
res = req.read().decode()
temp = json.loads(res)
lat = temp['result']['location']['lat']
lng = temp['result']['location']['lng']
if temp['result']['level'] == '城市':
return
else:
return lat, lng
filename = 'F:/wtj/paqie.csv'
data = pd.read_csv(filename,encoding = 'gbk')
for i, row in enumerate(data['X坐标'][:]):
if row == 0:
try:
address = data['地点'][i]
seq = ('武汉',address)
addr = ''.join(seq)
data['X坐标'][i] = getlnglat(address)[1]
data['Y坐标'][i] = getlnglat(address)[0]
except:
pass
tt = data['时间'][i]
sex = data['性别'][i]
place = data['地点'][i]
xx = data['X坐标'][i]
yy = data['Y坐标'][i]
try:
cursor.execute("INSERT INTO paqie(`ttime`,`sex`,`address`,`X_address`,`Y_address`)VALUES (%s,%s,%s,%s,%s)",\
(tt,int(sex),place,xx,yy))
except:
print('fail')
print(i)
百度ak的申请链接