将高德地图的 API 接口返回地址保存到 MongoDB 中

本文介绍如何使用Python调用高德地图API获取地理信息,并将JSON响应存储到MongoDB数据库中。通过实例演示了请求地理坐标、天气信息等数据的方法。

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

高德地图:
http://ditu.amap.com/service/regeo?longitude=116.3225&latitude=39.94403
http://ditu.amap.com/service/weather?adcode=110000

下面的例子把 json 字符串转换为 Python 对象(即字典)。


import requests

url = 'http://ditu.amap.com/service/regeo?longitude=116.3225&latitude=39.94403'
response = requests.get(url)

print(response.text)

import json

json_dict = json.loads(response.text)

print(type(json_dict))

name = json_dict.get("data").get("cross_list")[0].get("name")
print(name)

安装 mongodb,使用命令

brew install mongodb

这里写图片描述

这里写图片描述

递归创建子目录:

如果没有 /User/(用户名)/mongodb/db 目录,那么需要先创建一个。使用的命令为:

mkdir -p /User/liwei/mongodb/db

其中选项 -p 表示可以创建多级目录。

这里写图片描述

启动 MongoDB 的服务:

mongod --dbpath /User/liwei/mongodb/db --port 10001

启动 mongodb :

这里写图片描述

要特别注意观察这条命令执行以后的控制台输出,如果控制台提示,权限不足,那么应该在 mongodb –dbpath /User/liwei/mongodb/db –port 10001 这条命令之前加上 sudo。

import requests
import json

# pymongo 主要负责与 MongoDB 服务器进行交互
import pymongo

ip = '127.0.0.1'
port = 10001 # 注意:该变量是 int 类型

# 连接成功以后,所操作的数据库(和关系型数据库中的“数据库”相似)和集合(和关系型数据库中的“表”相似)的名称
db_name = 'gd_map'
collection_name = 'pos_info'
# collenction 中的元素是 document,即关系型数据库中的行 row

url_1 = 'http://ditu.amap.com/service/regeo?longitude=116.3225&latitude=39.94403'
url_2 = 'http://ditu.amap.com/service/weather?adcode=110000'
urls = [url_1, url_2]

# 连接到 Mongodb 服务器
mongo_conn = pymongo.MongoClient(ip, port)

# 根据数据库名称连接到相应的数据库
db = mongo_conn[db_name]
# 根据相应的集合名称在连接到的数据库中找到集合
collection = db[collection_name]

for url in urls:
    try:
        print(url)
        resp = requests.get(url)
        json_dict = json.loads(resp.text)
        # 将转换以后的字典结构(Python 对象)作为文档插入到相应的集合中去
        collection.save(json_dict)
    except Exception as e:
        print(e)

代码指定完成以后,会在控制台看到信息:

这里写图片描述

接下来,我们可以使用 mongodb 自带的客户端程序 mongo 查看数据是否真的插入成功。

mongo 127.0.0.1:10001

这里写图片描述

客户端软件下载:
https://robomongo.org/download

关闭 mongodb 的方法:

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值