如何用Python抓取动态加载的交互式地图数据?
抓取动态加载地图数据的方法选择
优先尝试requests(更高效)
大多数动态加载的地图数据,其实是通过AJAX请求从后端接口获取的,不需要启动浏览器。你可以按以下步骤操作:
- 打开浏览器开发者工具(F12),切换到「网络」标签页,刷新页面。
- 过滤「XHR/Fetch」类型的请求,查找和地图数据相关的接口(比如包含
job、maintenance、map这类关键词的请求)。 - 找到目标接口后,复制其请求URL、请求头(尤其是
User-Agent、Referer这类可能的校验字段),用requests模拟发送请求。 - 接口返回的通常是JSON格式数据,直接解析就能得到所有“jobs”数据,转成字典后就可以存入NoSQL数据库。
比如你可以用类似这样的代码框架:
import requests import json headers = { "User-Agent": "你的浏览器User-Agent", "Referer": "https://www.enel.com.co/es/personas/mantenimientos-programados.html" } api_url = "找到的接口URL" response = requests.get(api_url, headers=headers) jobs_data = response.json() # 转成字典后处理存入数据库
仅在必要时使用Selenium
如果接口有复杂的反爬(比如需要JS生成的签名、Cookie验证,或者数据是直接渲染在页面DOM里而非通过接口返回),再考虑用Selenium:
- 启动浏览器加载目标页面,等待地图元素加载完成(可以用
WebDriverWait等待特定元素出现)。 - 定位地图对应的DOM元素,提取其中的
data属性或者直接解析页面中的JS变量(比如有些页面会把数据存在window.mapData这类全局变量里)。 - 提取数据后转成字典,存入数据库。
总结
先优先抓包找接口,用requests处理,这比Selenium更轻量、更快。只有当接口无法直接获取数据时,再用Selenium模拟浏览器渲染。
内容的提问来源于stack exchange,提问作者Diego L
相关产品推荐
相关产品推荐

