当前位置:首页>python>用 Python 爬取百度地图 POI 数据:以“充电站”为例(附实战思路)

用 Python 爬取百度地图 POI 数据:以“充电站”为例(附实战思路)

  • 2026-09-09 07:30:51
用 Python 爬取百度地图 POI 数据:以“充电站”为例(附实战思路)

如果你最近在微信搜 「python爬百度地图POI」「百度地图爬虫」「DrissionPage实战」,这篇刚好能解决你的核心痛点。

今天我用 Python + DrissionPage,不写复杂逆向,不碰加密参数,直接把百度地图的 POI 数据(名称 / 地址 / 电话 / 经纬度 / 营业时间)抓下来,做选址分析、竞品调研、数据大屏都非常香。

关键词:Python爬虫 · 百度地图 · POI数据 · DrissionPage · 充电站 · 数据获取

一、为什么要爬百度地图 POI?

POI(Point of Interest)是地图数据的核心,比如你想做:

✅ 城市充电站分布分析

✅ 商铺选址(餐饮 / 药店 / 超市)

✅ 竞品门店调研

✅ 物流网点规划

✅ 政府 / 企业数据大屏

这些场景,百度地图的 POI 数据是最直接、最稳定的来源之一。


二、为什么选 DrissionPage?

传统爬虫爬百度地图,通常面临两个坑:

❌ 接口参数加密,逆向难度高

❌ 滑块验证码,requests 搞不定

DrissionPage 的优势在于:

✅ 基于浏览器自动化,但比 Selenium 轻量

✅ 支持接口监听(listen),不用硬解析 HTML

✅ 遇到滑块验证码,人工点一下就能过

✅ 代码逻辑接近 requests,学习成本低

一句话:既能控制浏览器,又能像 requests 一样拿接口数据。


三、核心思路

1️⃣ 启动浏览器并监听接口

百度地图的 POI 数据是通过 XHR 接口 返回的,而不是写在 HTML 里。

所以我们用 DrissionPage 的 listen 功能,直接拦截接口返回:

dp.listen.start('?newmap=1&reqflag=pcmap')

这一步非常关键,它相当于在浏览器里开了一个“抓包器”。


2️⃣ 搜索关键词

模拟用户在搜索框输入,然后点击搜索:

dp.ele('css:.searchbox-content-common').input(keyword)dp.ele('css:#search-button').click()

此时浏览器会发起 POI 列表请求,我们的监听器就能拿到数据。


3️⃣ 解析接口返回的 JSON

百度地图的 POI 接口返回的是标准 JSON,结构清晰:

json_data = resp.response.bodypois = json_data.get('content', [])

每一条 POI 里,核心字段都在第一层,不需要多层嵌套解析:

  • name → 名称

  • addr → 地址

  • tel → 电话

  • business_time → 营业时间

  • x / y → 百度墨卡托坐标(经度 / 纬度)


4️⃣ 翻页逻辑(最稳的方式)

百度地图的“下一页”按钮,用 tid 属性 定位最稳:

next_btn = dp.ele('@tid=toNextPage', timeout=3)

配合滚动到底部,基本不会漏页:

dp.scroll.to_bottom()next_btn.click()

5️⃣ 数据写入 CSV(防乱码)

写入 CSV 时,一定要用 utf-8-sig,否则 Excel 打开是乱码:

open(filename, 'w', encoding='utf-8-sig', newline='')

四、爬取结果示例(充电站)

名称

地址

电话

营业时间

经纬度

特来电充电站

天河区xx路

400-xxx

24小时

113.32, 23.12

星星充电

越秀区xx街

400-xxx

00:00-24:00

113.26, 23.13

✅ 数据真实

✅ 坐标可用

✅ 可直接导入 GIS / 高德 / 百度地图


五、常见坑位(血泪总结)

❌ 坑 1:滑块验证码

解决:DrissionPage 会真实打开浏览器,出现验证码时人工滑一下即可。

❌ 坑 2:接口结构变化

解决:用 listen.wait() 拿原始 JSON,不要写死路径。

❌ 坑 3:翻页失败

解决:先 scroll.to_bottom(),再点下一页。

❌ 坑 4:中文乱码

解决:CSV 必须用 utf-8-sig。


六、这个爬虫能怎么用?

✅ 做城市基础设施分析(充电站 / 停车场 / 公厕)

✅ 商铺选址(餐饮 / 药店 / 便利店)

✅ 竞品调研(同品牌门店分布)

✅ 简历项目(爬虫 + 数据清洗 + 可视化)

✅ 公众号技术干货文(就像这篇)


七、适合谁看?

  • 正在学 Python 爬虫 的同学

  • 需要做 课程设计 / 毕业设计 的同学

  • 做 数据分析 / GIS / 城市规划 的朋友

  • 想写 技术公众号文章 的创作者


八、结尾

想爬哪个城市的 POI 数据?

评论区扣下你的 「关键词」(如:充电站 / 药店 / 肯德基)👇

我把 完整可运行代码 + DrissionPage 配置教程 发给你!

觉得有用记得 点赞 + 在看 + 转发 💖

关注我,持续更新 Python 爬虫实战项目 🐍🗺️


#Python爬虫 #百度地图 #POI数据 #DrissionPage #充电站 #数据获取

最新文章

随机文章