项目背景:原来暑期兼职了一个地推的任务,让我搜集周边商铺的电话用于电销。我懒得跑,于是搜罗了高德、百度的两个api做了个小程序爬了我们当时周边的商铺电话,躲在空调房里爽了几天。最近翻找到,并整理成falsk网页服务版本发布,以供学习交流。
以下内容包含大部分AI读取代码后整理的内容。仅供学习参考
一、项目概述
这是一个整合了Flask后端框架和百度地图API的位置搜索应用,实现了以下核心功能:
二、使用说明
1. 环境配置与启动
[ol]
安装依赖:
pip install flask requests
获取API密钥:
配置密钥:
# 在app.py中添加你的API密钥
BAIDU_MAP_API_KEY = '你的百度地图API密钥'
文件目录:
[/ol]
/app.py
/templates/index.html
python app.py
[/ol]
2. 基本操作流程
[ol]
位置选择:
搜索设置:
执行搜索:
结果导出:
[/ol]
3. 功能演示

三、技术实现详解
1. 后端架构(Python Flask)
核心路由:
百度API集成:
# 地理编码API调用
def geocode():
address = request.args.get('address', '')
url = 'http://api.map.baidu.com/geocoding/v3/'
params = {'address': address, 'ak': BAIDU_MAP_API_KEY}
response = requests.get(url, params=params)
return jsonify(response.json())
2. 前端交互设计
地图功能:
// 地图初始化
var map = new BMap.Map("mapContainer");
map.centerAndZoom(new BMap.Point(116.404, 39.915), 15);
// 点击事件处理
map.addEventListener("click", function(e) {
marker.setPosition(e.point);
geoc.getLocation(e.point, updateAddress);
});
搜索功能:
function searchNearby() {
const location = `${lat},${lng}`;
fetch(`/search_nearby?location=${location}&query=${query}&radius=${radius}`)
.then(response => response.json())
.then(showResults);
}
3. 数据展示与导出
表格渲染:
function showResults(data) {
const tableBody = document.querySelector("#resultsTable tbody");
data.results.forEach(item => {
let row = tableBody.insertRow();
row.insertCell(0).textContent = item.name || "";
// ...其他字段
});
}
CSV导出:
function exportTable() {
const rows = document.querySelectorAll("#resultsTable tr");
let csvContent = "名称,地址,区域,城市,省份,电话,纬度,经度\n";
rows.forEach(row => {
let cols = row.querySelectorAll("td, th");
let line = Array.from(cols).map(cell =>
`"${cell.textContent.replace(/"/g, '""')}"`).join(",");
csvContent += line + "\n";
});
// 创建下载链接
const blob = new Blob(["\uFEFF" + csvContent], {type: "text/csv;charset=utf-8;"});
const link = document.createElement("a");
link.href = URL.createObjectURL(blob);
link.download = "位置搜索结果.csv";
link.click();
}
四、关键技术亮点
[ol]
安全数据访问:
function getNestedProperty(obj, path, defaultValue = "") {
return path.split('.').reduce((o, p) =>
(o && o
? o
: defaultValue), obj);
}
中文编码处理:
地图交互优化:
[/ol]
五、使用场景示例
[ol]
商业分析:
旅行规划:
市场调研:
[/ol]
六、使用步骤截图
[ol]

pip install flask
python app.py




[/ol]
七、下载地址
https://wwcy.lanzouq.com/b01yo9lzne
密码:52pj