使用python调用地图api解析地址的经纬度(使用多线程提速,并将结果保存在EXCEL)

该代码示例使用Python的requests库从QQ地图API获取地址的经纬度,结合xlwings处理Excel数据,通过多线程和concurrent.futures模块实现批量高效处理。同时,它展示了如何将结果写回Excel。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import requests
import xlwings as xw
import threading
import concurrent.futures
import time

data_list = []
url = “https://apis.map.qq.com/ws/geocoder/v1/?address=”
#获取经纬度
def get_lng_lat(address):
time.sleep(1)
try:
ret = requests.get(url=url,
params={
“address”:address,
“key”:“OJFBZ-MYHYJ-6X7FT-KBCNE-Z4VIZ-LPFAG”
}
).json()

    lng = ret["result"]["location"]["lng"]
    lat = ret["result"]["location"]["lat"]
    data_list.append([address,lng,lat])
except KeyError:
    data_list.append([address, 0, 0])

#打开excel文件
workbook = xw.Book(r"D:\python_text\work_file\work-data\副本昆明里程对比01.xlsx")
sheet = workbook.sheets[1]

#创建多线程
def threadss():
threads = []
for address in sheet.range(“a1:a{}”.format(sheet.used_range.last_cell.row)).value:
threads.append(
threading.Thread(target=get_lng_lat,args =(address,))
)

for thread in threads:
    thread.start()

for thread in threads:
    thread.join()

#调用线程池
#pool.map
data_list = []
with concurrent.futures.ThreadPoolExecutor() as pool:
rwsult = pool.map(get_lng_lat,sheet.range(“A1:A10”).value)
rwsult = list(rwsult)
data_list.append(rwsult)

#pool.submit
data_list = []
with concurrent.futures.ThreadPoolExecutor() as pool:
futures = [pool.submit(get_lng_lat,address) for address in sheet.range(“A1:A10”).value]

for future in concurrent.futures.as_completed(futures):
    print(future.result())
    data_list.append(future.result())

sheet.range("C1").value = data_list

if name == “main”:
start = time.time()
threadss()
end = time.time()
print(end-start)

#结果写入excle
sheet.range(“c1”).value = data_list

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值