最近接到一个需求,需要获得百度地图上某个城市的小学坐标,申请了百度接口之后,非常简单。需要实现准备好一个城市行政单位对照表。
![eb2a4bb99a72f7f1b3761b10a6e235b0.png](https://i-blog.csdnimg.cn/blog_migrate/9635129be8d956cb9c9f9f6fedca0045.jpeg)
具体代码如下
# -*-coding:UTF-8-*-
'''根据行政区域查询'''
import json
import csv
import sys
import requests # 导入requests库,这是一个第三方库,把网页上的内容爬下来用的
ty = sys.getfilesystemencoding()
# print(ty)#这个可以获取文件系统的编码形式
import time
import pandas as pd
las = 1 # 给las一个值1
ak = '申请的百度密匙'
city = '上海市'
out = open(city+'.csv', 'a', newline='')
csv_write = csv.writer(out, dialect='excel')
print(time.time())
print('开始')
ta = '小学'
file_path_1 = '/Users/daimaou/Desktop/百度地理坐标需求/市区对照表.xlsx'
data = pd.read_excel(file_path_1)
a = data[data['地级市'] == city]
new_name_list = a['市&区'].tolist()
print(new_name_list)
for new_name in new_name_list:
urls = []
for i in range(0, 10):
page_num = str(i)
url = 'http://api.map.baidu.com/place/v2/search?query=' + ta + '®ion='+new_name+'&page_size=20&page_num=' + str(
page_num) + '&output=json&ak=' + ak
urls.append(url)
print('url列表读取完成')
for url in urls:
time.sleep(1) # 为了防止并发量报警,设置了一个1秒的休眠。
print(url)
html = requests.get(url) # 获取网页信息
data = html.json() # 获取网页信息的json格式数据
for item in data['results']:
jname1 = item['province']
jname2 = item['city']
jname3 = item['area']
jname4 = item['name']
jname = jname1 + jname2 + jname3 + jname4
j_uid = item['uid']
jstreet_id = item.get('street_id')
jlat = item['location']['lat']
jlon = item['location']['lng']
jaddress = item['address']
jphone = item.get('telephone')
j_str = (jname, j_uid, jstreet_id, str(jlat), str(jlon), jaddress, jphone)
csv_write.writerow(j_str)
print("write over")
print(time.time())
print('完成')
获取结果如下
![17541da37fbf30764869ea10c251f7eb.png](https://i-blog.csdnimg.cn/blog_migrate/7ba3dbb4a4c589a3c542ca14757621f2.jpeg)