首页/新闻资讯/正文详情

基于百度地图 Place API 的城市 POI 抓取:python-mini-projects 中 Baidu_POI_crawl 实战全解析

发布时间:2026/9/20 21:46:34 来源:云帆数科 栏目:资讯中心
基于百度地图 Place API 的城市 POI 抓取:python-mini-projects 中 Baidu_POI_crawl 实战全解析
基于百度地图 Place API 的城市 POI 抓取python-mini-projects 中 Baidu_POI_crawl 实战全解析【免费下载链接】python-mini-projectsA collection of simple python mini projects to enhance your python skills项目地址: https://gitcode.com/gh_mirrors/py/python-mini-projects本文以 python-mini-projects 仓库中的 Baidu_POI_crawl 项目为主体系统讲解如何通过百度地图开放平台的 Place API 批量抓取指定城市、指定类型关键词的兴趣点POIPoint of Interest数据。读完本文你将掌握 AK 密钥的申请与配置、main.py四个命令行参数的完整用法以及util.py中分页请求 → 结果解析 → 落盘记录的底层实现细节能够独立搭建一个可运行的 POI 数据采集脚本。项目定位一条命令抓取整座城市的 POI 数据POIPoint of Interest兴趣点是地图服务中的核心数据单元泛指城市中具有地理坐标的实体场所如大学、餐厅、加油站、医院等。Baidu_POI_crawl 项目正是围绕这一需求设计给定一个城市名和一个 POI 关键词脚本会自动调用百度地图 Place 检索 API将命中的 POI 名称、经纬度、所在区县和详细地址逐条写入本地文本文件。从仓库结构看该项目由四个部分组成文件作用main.py命令行入口负责解析--ak/--city/--poi/--save四个参数并调度抓取流程util.py核心实现封装百度 Place API 的请求、分页、解析与落盘逻辑requirements.txt依赖清单requests与jsonoutput/2021-11-17.txt实际运行示例展示了以成都 大学为条件抓取到的 54 条 POI 记录其中output目录下的历史结果文件是本项目实战价值最直接的证据它真实记录了 2021-11-17 以 大学 为关键词在成都地区抓取到的数据可作为理解输出格式的参照样本。环境准备与前置条件安装依赖项目的依赖极为精简requirements.txt 中仅声明了两个模块requests json其中requests是需要通过 pip 安装的第三方 HTTP 客户端库json是 Python 标准库自带的 JSON 解析模块脚本用它解析接口返回的 JSON 响应。在项目根目录下执行pip install -r projects/Baidu_POI_crawl/requirements.txt申请百度地图 Web API 密钥AK由于脚本通过百度地图开放平台的 Web 服务 API 获取数据调用前必须持有有效的访问密钥AKAccess Key。按原文档说明需要登录百度地图开放平台在控制台中创建服务端类型的应用获取对应的 AK登录百度地图开放平台lbsyun 控制台进入应用管理 → 我的应用创建新应用应用类型选择 Web 服务 API即 README 中提到的 web API勾选所需的服务权限创建成功后平台会生成一串 AK将其复制保存作为后续--ak参数的值。注意AK 相当于调用 API 的身份凭证请勿提交到公开仓库或泄露给他人。命令行参数与运行方式参数总览main.py 使用标准库argparse定义了四个命令行参数其中前三个为必填参数是否必填默认值含义--ak是无百度地图 Web API 的 AK 密钥--city是无要检索的城市名称如成都--poi是无POI 关键词如大学、餐厅--save否output结果文件的保存目录入口函数run(args)会先检查--save指定的目录是否存在不存在则通过os.makedirs(output)自动创建随后把四个参数透传给util.py中的get_baidu_poi(roi_key, city_str, baidu_web_ak, output)完成抓取最后打印current area completed表示该轮抓取结束。运行示例在仓库根目录执行原文档中的路径使用了 Windows 反斜杠这里统一为 Linux/macOS 风格的相对路径cd projects/Baidu_POI_crawl python main.py --ak your_ak --city 成都 --poi 大学脚本运行后会在默认的output目录下生成两个文件YYYY-MM-DD.txt当天抓取到的 POI 明细数据YYYY-MM-DD.log当天的抓取日志记录翻页截止位置与异常信息。若想自定义保存位置可追加--save参数python main.py --ak your_ak --city 成都 --poi 大学 --save data底层实现原理util.py 源码级解析如果说 main.py 是外壳那么 util.py 就是整个抓取流程的引擎。其核心函数get_baidu_poi(roi_key, city_str, baidu_ak, output)在while True循环中完成了构造请求 → 发起调用 → 解析响应 → 写入文件 → 翻页的完整链路。1. 请求 URL 的构造源码util.py按如下规则拼接检索地址URL http://api.map.baidu.com/place/v2/search?query roi_key \ region city_str \ outputjson \ ak baidu_ak \ scope2 \ page_size20 \ page_num str(page_num)各参数含义如下查询参数取值来源说明query--poi检索关键词即要抓取的 POI 类型或名称region--city检索区域即城市名称output固定json返回格式为 JSONak--ak百度地图密钥scope固定2检索详细程度从脚本实际解析的字段看scope2使响应包含行政区area与地址address等详细信息page_size固定20每页返回记录数page_num循环变量页码从 0 开始逐页递增随后通过requests.get(URL)发起 HTTP GET 请求并用json.loads(resp.text)将响应解析为字典。2. 分页抓取与终止条件百度 Place API 单次查询只能返回有限条记录因此脚本以page_size20固定分页、从page_num0开始逐页累加。分页的终止条件有两个util.py正常结束当前页res[results]为空数组说明已无更多数据脚本将该城市与页码写入日志后break异常结束请求或解析过程抛出任何异常except分支打印except并记录异常发生的城市与页码后break。3. 结果解析与落盘对非空结果页脚本遍历res[results]逐条提取 5 个字段util.pyj_name r[name] # POI 名称 j_lat r[location][lat] # 纬度 j_lon r[location][lng] # 经度 j_area r[area] # 所属行政区区县 j_add r[address] # 详细地址 j_str str(j_name) , str(j_lon) , str(j_lat) \ , str(j_area) , str(j_add) \n file.writelines(j_str)每条记录以逗号分隔写入当日.txt文件字段顺序固定为名称,经度,纬度,行政区,地址每行一条。文件以追加模式a打开并指定encodingutf-8保证中文内容正确写入。4. 限速与日志为了避免高频请求触发接口限流脚本在每翻完一页后执行time.sleep(1)休眠 1 秒util.py。同时日志文件YYYY-MM-DD.log会记录两类事件某一城市抓取到最后一页时的页码、以及发生异常时的城市与页码时间戳精确到秒%Y-%m-%d-%H-%M-%S便于事后核对抓取进度与断点位置。输出结果解读一份真实的历史抓取样本仓库中保留的 output/2021-11-17.txt 是一次真实的运行结果以成都为城市、大学为关键词共抓取到 54 条 POI。摘录前几行四川大学(望江校区),104.090633,30.637031,武侯区,四川省成都市武侯区一环路南一段24号 四川大学(江安校区),104.005145,30.562814,双流区,成都市双流区川大路二段2号 电子科技大学(沙河校区),104.107198,30.681868,成华区,四川省成都市成华区建设北路二段4号 成都大学,104.196613,30.656051,龙泉驿区,四川省成都市龙泉驿区成洛大道2025号 西南民族大学(武侯校区),104.055946,30.645411,武侯区,四川省成都市武侯区一环路南四段16号这份样本可以直观验证两点输出格式与源码完全一致每行均为名称,经度,纬度,行政区,地址五段式 CSV 风格结构可直接导入 Excel、Pandas 或 GIS 工具做后续分析数据覆盖具有区域性结果包含武侯区、双流区、成华区、郫都区、金堂县、都江堰市等多个成都下属区县说明region成都的检索范围覆盖了全市而不仅是中心城区。拿到这份数据后即可基于经纬度做地图标注、基于行政区做分布统计或结合地址字段做更细粒度的空间分析。使用注意事项与扩展方向已知的实现特点与限制从源码结构看该脚本存在以下值得注意的实现细节基于 util.py 推断接口走 HTTP 而非 HTTPS请求地址为http://api.map.baidu.com/...在强调加密传输的生产环境中建议自行升级为 HTTPS单城市单关键词轮询一次运行只处理一个city poi组合如需批量城市或多种 POI 类型需在外部循环中多次调用get_baidu_poi固定分页大小page_size20为硬编码值若需调整每页数量或改用其他检索半径如周边检索radius需修改 util.py 中的 URL 拼接逻辑宽泛异常捕获except分支会吞掉所有异常类型并直接终止当前城市抓取排错时可先手工请求一次 URL 确认 AK 权限与配额状态。可行的扩展方向多城市/多关键词批量抓取在main.py外层增加循环遍历城市列表与 POI 关键词列表每次调用get_baidu_poi并指定不同--save子目录结果结构化存储当前输出为 CSV 风格文本可改为写入 SQLite / GeoJSON便于直接对接地理信息处理流程断点续抓日志文件已记录了每个城市的最后页码可据此在异常中断后从断点页码继续抓取避免重复消耗配额请求重试与更细粒度限速将except分支改为记录后重试若干次并将time.sleep(1)提取为可配置项。总而言之Baidu_POI_crawl 是一个麻雀虽小、五脏俱全的 API 数据采集范例从 CLI 参数设计到分页请求、从响应解析到日志落盘完整覆盖了写一个生产可用爬虫脚本所需的全部关键环节。理解它的实现后你只需替换 API 端点与字段映射即可快速迁移到其他地图服务或数据源。【免费下载链接】python-mini-projectsA collection of simple python mini projects to enhance your python skills项目地址: https://gitcode.com/gh_mirrors/py/python-mini-projects创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

ANTLR 4 版本发布全流程指南:从 git 分支管理到多语言运行时部署
ANTLR 4 版本发布全流程指南:从 git 分支管理到多语言运行时部署

ANTLR 4 版本发布全流程指南:从 git 分支管理到多语言运行时部署 【免费下载链接】antlr4 ANTLR (ANother Tool for Language Recognition) is a powerful parser generator for reading, processing, executing, or translating structured text or binary files. … · 2026/9/20 21:46:34

baoyu-infographic kawaii 风格完全指南:日系可爱风信息图的配色、元素与提示词工程
baoyu-infographic kawaii 风格完全指南:日系可爱风信息图的配色、元素与提示词工程

AI 技能AI 插件 【免费下载链接】baoyu-skills 项目地址: https://gitcode.com/gh_mirrors/ba/baoyu-skills 点击查看 免费下载 导读 本文聚焦 baoyu-infographic 技能内置的 kawaii(日系可爱风)视觉风格,系统拆解其官方风格定义… · 2026/9/20 21:46:34

一文搞懂网站硬件防火墙:小白也能配的安全防线
一文搞懂网站硬件防火墙:小白也能配的安全防线

一文搞懂网站硬件防火墙:小白也能配的安全防线 域名解析到服务器,中间隔了个黑盒子,这就是硬件防火墙。很多站长以为买了云服务器就万事大吉,结果一查发现,IP暴露在外,服务器直接裸奔。别慌,今天把这事掰开了揉碎了讲,让你彻底 一文搞懂 这套防御体系。 威胁场景:你的网站正在被谁盯着?… · 2026/9/20 21:45:54

SOEM驱动汇川SV660N伺服的实战指南:物理层、PDO映射与DC同步
SOEM驱动汇川SV660N伺服的实战指南:物理层、PDO映射与DC同步

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/21 1:42:40

numpy-ml 高斯过程回归指南:GPRegression 完整实现、预测与采样原理
numpy-ml 高斯过程回归指南:GPRegression 完整实现、预测与采样原理

机器学习人工智能 【免费下载链接】numpy-ml Machine learning, in numpy 项目地址: https://gitcode.com/gh_mirrors/nu/numpy-ml 点击查看 免费下载 高斯过程回归(Gaussian Process Regression,GPR)是一种非参数贝叶斯回归方法… · 2026/9/21 1:42:40

xi-editor 插件开发起步:基于 Rust 的 sample-plugin 模板解析与安装实战
xi-editor 插件开发起步:基于 Rust 的 sample-plugin 模板解析与安装实战

xi-editor 插件开发起步:基于 Rust 的 sample-plugin 模板解析与安装实战 【免费下载链接】xi-editor A modern editor with a backend written in Rust. 项目地址: https://gitcode.com/gh_mirrors/xie/xi-editor 本篇指南以 xi-editor(后端由 R… · 2026/9/21 1:42:40

办公楼亚克力LED发光字制作安装施工组织设计与实操指南
办公楼亚克力LED发光字制作安装施工组织设计与实操指南

简介:办公楼亚克力LED发光字制作安装工程施工组织设计文档,面向施工管理人员、工程技术人员及项目负责人,针对已投入使用的办公楼楼顶安装发光字这一场景,完整提供了从工程说明、工程概况到工艺流程、施工要求、安全保证措施的实施… · 2026/9/21 1:42:40

RISC-V AI芯片开发:告别自研编译器,用现成工具链实现降维打击
RISC-V AI芯片开发:告别自研编译器,用现成工具链实现降维打击

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/21 1:42:40

高质量数据集建设与标准化:从数据治理到质量评估实战
高质量数据集建设与标准化:从数据治理到质量评估实战

简介:一份四十页PPT资源,聚焦高质量数据集建设与标准化情况,面向人工智能从业者、数据工程师、大模型训练及数据治理相关读者。内容从数据驱动的人工智能发展切入,回顾浅层学习、深度学习到大模型时期数据集规模与质量要求的演进&… · 2026/9/21 1:41:40

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化
Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡… · 2026/9/21 0:02:39

Word表格编号全攻略:从列表编号到题注交叉引用
Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技… · 2026/9/21 0:02:39

从第一个站到第二个站:独立开发者的静态网站选型与落地实践
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&… · 2026/9/20 0:00:41

Claude Code 按智谱AI指南装完,ANTHROPIC_BASE_URL 改走 TaoToken 兼容通道行不行
Claude Code 按智谱AI指南装完,ANTHROPIC_BASE_URL 改走 TaoToken 兼容通道行不行

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/21 0:00:18

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程
agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and … · 2026/9/21 0:00:18

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析
gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin拥有AI辅助的基础开发平台,企业级业务AI开发解决方案,内置mcp辅助服务,内置skills管理,… · 2026/9/21 0:00:18

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码