如何用Python从Google Maps的XHR请求中提取坐标?
从Hemnet网页提取Google Maps坐标的方案
你已经定位到关键线索:坐标藏在名为SingleImageSearch的XHR请求负载中,无需解析页面HTML,直接模拟该API请求即可获取数据,具体步骤如下:
1. 采集请求详情
打开浏览器开发者工具的「网络」面板,找到SingleImageSearch请求:
- 复制请求的完整URL(通常是Hemnet的API路径,类似
https://www.hemnet.se/api/v1/maps/single_image_search) - 确认请求方法(基本为POST)
- 复制请求头里的
User-Agent、Referer、X-Requested-With等字段,这些是模拟请求的必要标识,避免被反爬拦截 - 提取请求负载(Payload)里的参数,你提供的链接中的数字串
1967930410921603954是核心参数之一
2. Python代码实现
用requests库直接发送POST请求,示例代码如下:
import requests # 替换为实际的SingleImageSearch API地址 api_url = "https://www.hemnet.se/api/v1/maps/single_image_search" # 模拟浏览器请求头,按需从开发者工具复制完整字段 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36", "Referer": "https://www.hemnet.se/salda/villa-5rum-bunkeflostrand-malmo-kommun-stenoregatan-72-1967930410921603954", "X-Requested-With": "XMLHttpRequest" } # 构建请求负载,参数从开发者工具的Payload里完整复制 payload = { "listing_id": "1967930410921603954", # 补充其他必要参数,比如zoom、image_size等,按实际Payload填写 } # 发送请求并解析结果 response = requests.post(api_url, headers=headers, json=payload) if response.ok: data = response.json() # 根据实际返回的JSON结构提取坐标,比如可能是data["location"]["coordinates"] coords = data.get("location", {}).get("coordinates") if coords: print(f"提取到的坐标:经度{coords[0]}, 纬度{coords[1]}") else: print("未找到坐标字段,请检查返回的JSON结构") else: print(f"请求失败,状态码:{response.status_code}")
3. 关键注意点
- 必须保证请求头和负载参数与浏览器中的完全一致,否则可能触发反爬返回403错误
- 如果请求需要Cookie,从浏览器的请求头里复制完整Cookie字段加入headers
- 网站API可能会不定期更新,若后续代码失效,重新检查网络面板的请求参数即可
内容的提问来源于stack exchange,提问作者JohanB
相关产品推荐
相关产品推荐

