使用百度地图api采集兴趣点数据

优采云 发布时间: 2020-08-21 22:55

  使用百度地图api采集兴趣点数据

  使用百度地图api采集兴趣点数据

  比如,我们想要采集医院的数据信息,主要包括经纬度座标和电话等信息。

  首先,我们须要注册百度开发帐号,然后创建应用,会得到ak码,在访问数据时须要这个参数。

  然后,需要使用requests包,通过request = requests.get(url,params=params) 可以恳求到数据

  最后,解析恳求到的json数据并保存。

  json数据格式如下:

  {

"status":0,

"message":"ok",

"total":228,

"results":[

{

"name":"辽中县新华医院",

"location":{

"lat":41.518185,

"lng":122.743932

},

"address":"北一路57号",

"street_id":"4a25f3d22e0206b428201a39",

"telephone":"(024)62308120",

"detail":1,

"uid":"4a25f3d22e0206b428201a39"

}

……

}

  完整的代码如下:

  import requests

import json

import pandas as pd

def request_hospital_data():

ak="xxxxxxxxxxx" # 换成自己的 AK,需要申请

url = "http://api.map.baidu.com/place/v2/search?query=医疗&page_size=20&scope=1&region=辽中&output=json&ak="+ak

params = {'page_num':0} # 请求参数,页码

request = requests.get(url,params=params) # 请求数据

total = json.loads(request.text)['total'] # 数据的总条数

# print(total)

total_page_num = (total+19) // 20 # 每个页面大小是20,计算总页码

items = [] # 存放所有的记录,每一条记录是一个元素

for i in range(total_page_num):

params['page_num'] = i

request = requests.get(url,params=params)

for item in json.loads(request.text)['results']:

name = item['name']

lat = item['location']['lat']

lng = item['location']['lng']

address = item.get('address', '')

street_id = item.get('street_id', '')

telephone = item.get('telephone', '')

detail = item.get('detail', '')

uid = item.get('uid', '')

# print(name, lat, lng, address, street_id, telephone, detail, uid)

new_item = (name, lat, lng, address, street_id, telephone, detail, uid)

items.append(new_item)

# 使用pandas的DataFrame对象保存二维数组

df = pd.DataFrame(items, columns=['name', 'lat', 'lng', 'adderss', 'street_id', 'telephone', 'detail', 'uid'])

df.to_csv('liaozhong_hospital_info.csv', header=True, index=False)

request_hospital_data()

  最终可以得到如下的数据:

  

  此外,我们可以将url中的query参数换其它兴趣点类别,就能获得相应的数据。

  比如,query=住宅区,这样可以获取到住宅区的数据。

  兴趣点的类别如以下

  

  它的地址是

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线