Python调用百度地图API来实现地名到经纬度的转换

代码如下

import socket
from urllib.parse import quote_plus
 
 
request_txt = """\
GET /geocoder?address={}&output=json HTTP/1.1\r\n\
Host: api.map.baidu.com:80\r\n\
User-Agent: search4.py (Foundations of Python Network Programming)\r\n\
Connection: close\r\n\
\r\n
"""
 
 
# 建立会话
def geocode(address):
    sock = socket.socket()
    sock.connect(('api.map.baidu.com', 80))
    request = request_txt.format(quote_plus(address))
    sock.sendall(request.encode('ascii'))
    raw_reply = b''
    while True:
        more = sock.recv(4096)
        if not more:
            break
        raw_reply += more
    str1 = raw_reply.decode('utf-8')
    str1 = str1[str1.index("lng"):str1.index("\n        }")].split(",\n            ")
    lng = float(str1[0].split(":")[1])
    lat = float(str1[1].split(":")[1])
    return lng,lat
 
 
lng,lat = geocode('Afghanistan')
lng,lat

猜你喜欢

转载自blog.csdn.net/Kilig___/article/details/129888079