打印

通过Pyhton爬取高德api返回经纬度网址的数据并存储在excel中

0

通过Pyhton爬取高德api返回经纬度网址的数据并存储在excel中

版主留言
jianci(2024-3-7 11:52)提示: TAG寫錯了,是“ 一代综师”,不是一代宗師,請重新修改。
这不是一个正常的需求,正常情况下通过api调用即可完成,但因某些原因需要将数据记录在excel中因此做了这个玩意
首先需要下载安装需要用到的库,包含xlrd用于excel数据的读取、requests用于返回的网址取数、xlutils.copy用于数据写入
import xlrd
import requests
from xlutils.copy import copy

需要准备一个存储了地址、所在地市的excel并进行数据读取wb = xlrd.open_workbook('高德地图经纬度返回.xls')
# 读取sheet
ws = wb.sheets()
wsname = wb.sheet_names()
print(wsname)
ws1 = wb.sheet_by_name('Sheet1')
# 找到需修改的工作表
nwb = copy(wb)
nw1 = nwb.get_sheet('Sheet1')
然后获取数据并查询,然后将数据返回写入单元格里

# 获取行列
# 行数
crow1 = ws1.nrows
# 列数
ccol1 = ws1.ncols
i = 1
while i < crow1:
    row_data = ws1.row_values(i)
    date = {
        'address': row_data[1],
        'city': row_data[2],
        'output': 'XML',
        'key': '你在高德api中获得的key'

}
    url = 'https://restapi.amap.com/v3/geocode/geo'

postdz = requests.post(url=url, data=date)
    page_text = postdz.text
    nw1.write(i, 4 , page_text)
    i=i 1
print('查询结束')
nwb.save('高德地图经纬度返回.xls')

然后根据返回的数据进行解析,并将经度纬度分别放在右侧的单元格里
y=1
while y<crow1:
    row_data = ws1.row_values(y)
    row_date = eval(row_data[4])
    sfcx=row_date['status']
    if sfcx == '1':
        b=row_date['count']
        jwdsj=row_date['geocodes']
        a=1

while a<=eval(b):
            jwdsjtqjg_address=jwdsj[a-1]['formatted_address']
            jwdsjtqjg_city=jwdsj[a-1]['city']
            jwdsjtqjg_district = jwdsj[a-1]['district']
            jwdsjtqjg_location = jwdsj[a-1]['location']
            nw1.write(y, 5   a * 5, jwdsjtqjg_address)
            nw1.write(y, 6 a*5, jwdsjtqjg_city)
            nw1.write(y, 4 a*5, jwdsjtqjg_district)
            nw1.write(y, 7 a*5, jwdsjtqjg_location)
            a=a 1

else:
            print('未查询到地址')
    y=y 1
nwb.save('高德地图经纬度返回.xls')

[ 本帖最后由 1099168634 于 2024-3-9 02:01(GMT0) 编辑 ]
本帖最近评分记录
  • jianci 金币 +20 感谢分享,论坛有您更精彩! 2024-3-7 11:55

TOP

当前时区 GMT+8, 现在时间是 2025-3-21 14:25