# -*- coding: utf-8 -*-
import json
from urllib.request import urlopen, quote
import requests,csv
import pandas as pd
import json
import numpy as np
from pathlib import Path
filename = Path('E:\景点列表1.xlsx')
# read the file使用哪列:usecols参数从0开始
df = pd.read_excel(filename,sheet_name=0,usecols=[0],header=None)
mylist = df.values.tolist()
address=[]
for i in mylist:
address.append(i[0])
def getlnglat(address):
url = 'http://api.map.baidu.com/geocoding/v3/'
output = 'json'
ak = 'gabgixtMicsWIlvc7pMMsXhqbiIc19x3' #'申请的密钥'
add = quote(address) #由于本文城市变量为中文,为防止乱码,先用quote进行编码
uri = url + '?' + 'address=' + add + '&output=' + output + '&ak=' + ak
req = urlopen(uri)
res = req.read().decode() #将其他编码的字符串解码成unicode
temp = json.loads(res) #对json数据进行解析
return temp
f = open('E://scenery_lng_lat.csv','w',encoding='utf-8',newline='')
csv_writer = csv.writer(f)
csv_writer.writerow(["scenery", "lng", "lat"])
for i in address:
lng = getlnglat(i)['result']['location']['lng'] #采用构造的函数来获取经度
lat = getlnglat(i)['result']['location']['lat'] #获取纬度
str_temp = [i,lng,lat]
csv_writer.writerow(str_temp) #写入文档
f.close()
之前也尝试使用if语句进行判断,但还是没有解决