代码如下
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
该代码示例展示了如何使用Python的socket和urllib.parse库来连接百度地图API,获取地址的经纬度信息。函数geocode接受一个地址参数,通过发送HTTPGET请求到百度地图API,解析返回的JSON数据,提取出经度(lng)和纬度(lat)坐标。
5887

被折叠的 条评论
为什么被折叠?



