hello,大家好,我是wangzirui32,最近笔者的文章总访问突破1万了,这一路来感谢大家的支持,谢谢!这也是我的第60篇原创博文,希望你能认真的学习完它。
开始学习吧!
1. 百度API接口
1.1 注册或登录账户
百度地图提供了一系列API接口,供开发者使用。
首先,你需要去/v2/?reg注册一个账户,如果你已经有了一个账户,可以点击/v2/进行登录。
然后,你需要输入开发者资料,就可以创建自己的应用了!
1.2 创建自己的应用
访问/apiconsole/key#/home(必须登录),然后点击“创建应用”红色按钮,设置应用名称为“我的应用”(也可以自己命名),开启所有基础服务,如果你并不想对IP做出限制,就可以在“IP白名单”中输入“0.0.0.0/0”即可,如图:
点击“提交”,即可创建应用,如图:(这里展示的是博主之前注册的应用)
每个应用都有AK,这类似于密钥,只要拥有密钥,即可访问应用。
2. 编写Python代码
2.1 爬取API代码
from requests import getfrom json import loads, dumpparams = {"q": "餐厅", # 查询的建筑"region": "北京", # 查询的城市"output": "json", # 规定输出格式 可以为json或xml"page_size": "20", # 设置返回20条信息"ak": "你的AK" # 填入你的AK}# 百度API接口网址url = "http://api./place/v2/search"reponse = get(url, params=params) # 开始请求APIdata = 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--------------------
好了,编写完毕!
今天的课程就到这里,这节课可能有亿点长,不过还是希望你能学习到其中的精髓!拜拜!