zoukankan      html  css  js  c++  java
  • 百度API获取地点经纬度

    使用python调用百度地图API获得指定地点的经纬度

    参考文章:https://www.cnblogs.com/zealousness/p/8303645.html

    使用本文,发现一个问题,作者提供的key可以正常调用API,但是自己的key和同事的key却不行。

    百度一把,发现作者的url是旧版本的,现在已升级到V3,因此url位置需要重新拼接。

    官方指导文档如下:http://lbs.baidu.com/index.php?title=webapi/guide/webservice-geocoding

    更新后代码段如下:

    import json
    from urllib.request import urlopen,quote
    import pandas as pd
    import time
    
    #http://api.map.baidu.com/geocoding/v3/?address=北京市海淀区上地十街10号&output=json&ak=您的ak&callback=showLocation
    
    
    
    def p2l(name):
        # 1、设置url和3个参数(输出格式,key,要翻译的地址)
        url = 'http://api.map.baidu.com/geocoding/v3/'
        output = 'json'
    
        # ak = 'sXZHPZahdMeK3Gy3uC7ZeRQrVXXXXXXX'
        ak = '8fRDBDKqn4BYByCymMXf0OHf7XXXXXXX'  #此key打码,请申请自己的key替换掉
        address = quote(name)
    
        # 2、拼接get请求(url?参数1=值1&参数2=值2&参数3=值3)
        request = url + '?' + 'address=' + address + '&output=' + output + '&ak=' + ak 
    
        # 3、urlopen发送请求,获得response
        response_file = urlopen(request)
    
        # 4、读取response字符串
        response_str = response_file.read().decode()
    
        # 5、str转json
        response_json = json.loads(response_str)
        # print(response_json)
    
        # 6、读json,
        lat=response_json['result']['location']['lat']
        lng=response_json['result']['location']['lng']
    
        return [lat,lng]
    
    name = '河北省 石家庄 中山东路 北国商城'
    # name = input()
    print(p2l(name))
    

    关于百度API

    1. 使用爬虫时,要注意设定间隔时间,避免给服务器造成太大负荷。可惜没在官方文档上找到最大请求数。问同事说,百度API的逆地理API美秒最多160次。我加入了time.sleep(0.01),设定了间隔,美秒发出的请求不超过100条。
    2. 注册key的时候,正常的脚本开发选择“浏览器”选项

    最后,附上本次的使用心得:
    因为是批量查询地点的缘故。本次脚本前期没有写纠错机制。很多时候,查询的链接或多或少会出点问题,比如网络波动引发的超时报错。调用api的语句,一定记得写在try...except语句中。这样,一条查询出问题也可以继续查询后续的数据。
    试想,如果没有纠错机制,手中共有8万条数据需要查询,当等待了数十分钟,查询了6万多行时,程序抛出错误,前面的数据也没有及时写入文件,那么除了要补上纠错语句,还得花费大力气去寻找异常位置。对时间和精力都是巨大的消耗。

  • 相关阅读:
    正则表达式
    公司培训文档混淆的基本概念
    堆和栈的区别[导入]
    一個textlist控件(左右兩個文本框)。
    深入浅出之正则表达式(一)
    公司培训文档-c#基础学习
    问题
    [转]CStdioFile中文问题
    VB用户控件制作讲解与实例用户控件属性或函数的描述信息如何写入程序
    什么是表驱动
  • 原文地址:https://www.cnblogs.com/kang-mei-208/p/14081765.html
Copyright © 2011-2022 走看看