hello,大家好,我是wangzirui32,最近笔者的文章总访问突破1万了,这一路来感谢大家的支持,谢谢!这也是我的第60篇原创博文,希望你能认真的学习完它。
开始学习吧!
1. 百度API接口
1.1 注册或登录账户
百度地图提供了一系列API接口,供开发者使用。
首先,你需要去https://passport.baidu.com/v2/?reg注册一个账户,如果你已经有了一个账户,可以点击https://passport.baidu.com/v2/进行登录。
然后,你需要输入开发者资料,就可以创建自己的应用了!
1.2 创建自己的应用
访问http://lbsyun.baidu.com/apiconsole/key#/home(必须登录),然后点击“创建应用”红色按钮,设置应用名称为“我的应用”(也可以自己命名),开启所有基础服务,如果你并不想对IP做出限制,就可以在“IP白名单”中输入“0.0.0.0/0”即可,如图:
点击“提交”,即可创建应用,如图:(这里展示的是博主之前注册的应用)
每个应用都有AK,这类似于密钥,只要拥有密钥,即可访问应用。
2. 编写Python代码
2.1 爬取API代码
from requests import get
from json import loads, dump
params = {
"q": "餐厅", # 查询的建筑
"region": "北京", # 查询的城市
"output": "json", # 规定输出格式 可以为json或xml
"page_size": "20", # 设置返回20条信息
"ak": "你的AK" # 填入你的AK
}
# 百度API接口网址
url = "http://api.map.baidu.com/place/v2/search"
reponse = get(url, params=params) # 开始请求API
data = loads(reponse.text)["results"] # 获取返回的数据
# 存储数据
with open("data.json", 'w') as f:
dump(data, f)
print("已经存储了", len(data), "条json数据!")
运行代码,目录下创建了一个json文件,里面为北京市的餐厅数据。
2.2 解析代码数据
先来看data.json文件中的一段json数据:
{
"name":"眉州东坡酒楼(国奥村店)", # 餐厅名称
"location":{
# 经纬度
"lat":40.014776,
"lng":116.387952
},
"address":"北京市朝阳区林萃东路国奥中心A座1楼", # 具体地址
"province":"北京市",
"city":"北京市",
"area":"朝阳区",
"street_id":"d51b117f32042f082ad7ab17",
"telephone":"(010)57393280,(010)57393286,(010)57393281", # 热线电话
"detail":1,
"uid":"d51b117f32042f082ad7ab17"
}
根据这些,编写分析代码:
from json import load
# 读取数据
with open("data.json", "r") as f:
data = load(f)
# 遍历数据
for i in data:
name = i['name'] # 获取餐厅名称
location = i['location'] # 经纬度获取
lat = location['lat'] # 纬度
lng = location['lng'] # 经度
address = i['address'] # 地址
telephone = i['telephone'] # 热线
# 打印结果
print("餐厅名称:", name)
print("餐厅经度:", lng, ",纬度:", lat)
print("地址:", address)
print("热线电话:", telephone)
print(20 * "-") # 20个-为数据分隔
运行代码,输出:(这里展示2项)
餐厅名称: 眉州东坡酒楼(国奥村店)
餐厅经度: 116.387952 ,纬度: 40.014776
地址: 北京市朝阳区林萃东路国奥中心A座1楼
热线电话: (010)57393280,(010)57393286,(010)57393281
--------------------
餐厅名称: 潇湘府(上地店)
餐厅经度: 116.308366 ,纬度: 40.049949
地址: 北京市海淀区东北旺路2号
热线电话: (010)82897458,(010)82897358
--------------------
好了,编写完毕!
今天的课程就到这里,这节课可能有亿点长,不过还是希望你能学习到其中的精髓!拜拜!