You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过Selenium/BeautifulSoup从CSS translate3d()提取经纬度?

网页地图Marker像素坐标转经纬度及经纬度数据提取方案

首先明确:你看到的transform: translate3d(676px, 360px, 0px)是marker在网页地图容器内的像素相对坐标,和地理经纬度没有直接换算关系——除非能获取该地图的投影参数、容器与实际地理范围的映射规则,这在公开网站上几乎无法实现,所以不用在这个方向浪费精力。

下面是几种直接提取页面经纬度数据的可行方法:

1. 用BeautifulSoup解析网页源代码

大部分房产网站会把经纬度嵌入在网页的meta标签、script标签的JSON数据或隐藏DOM元素中,直接搜索关键词即可:

import requests
from bs4 import BeautifulSoup
import json

url = "https://www.remax.pe/web/search/property/propiedad-otros-en-venta-los-olivos-lima-lima-1029168/"
resp = requests.get(url)
soup = BeautifulSoup(resp.text, "html.parser")

# 查找meta标签中的经纬度
lat_tag = soup.find("meta", attrs={"name": "latitude"})
lng_tag = soup.find("meta", attrs={"name": "longitude"})
if lat_tag and lng_tag:
    print(f"提取到经纬度: {lat_tag['content']}, {lng_tag['content']}")

# 遍历script标签,查找包含经纬度的JSON数据
for script in soup.find_all("script", type="application/json"):
    try:
        content = json.loads(script.string)
        # 根据实际数据结构调整字段查找逻辑
        if "property" in content and "location" in content["property"]:
            loc = content["property"]["location"]
            print(f"房源经纬度: {loc.get('lat')}, {loc.get('lng')}")
    except:
        continue

2. 用Selenium提取动态加载的数据

如果经纬度是通过JS动态渲染或从后端接口异步获取的,可以用Selenium模拟浏览器加载后执行JS提取:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

opts = Options()
opts.add_argument("--headless=new")
driver = webdriver.Chrome(options=opts)
driver.get(url)

# 尝试从地图实例获取中心经纬度(适配常见的Leaflet/Google Maps)
try:
    center = driver.execute_script("return window.map?.getCenter()")
    if center:
        print(f"地图中心经纬度: {center['lat']}, {center['lng']}")
except:
    pass

# 提取marker绑定的经纬度数据
try:
    markers = driver.execute_script("return window.map?.markers")
    if markers:
        for marker in markers:
            pos = marker.getLatLng()
            print(f"Marker经纬度: {pos['lat']}, {pos['lng']}")
except:
    pass

driver.quit()

3. 检查浏览器网络请求

打开浏览器开发者工具(F12)→ 切换到「Network」标签→ 刷新页面,筛选「XHR/Fetch」类型的请求,查看房源详情接口的返回数据,这类接口通常会直接返回包含经纬度的结构化地理信息。

针对你提供的REMAX页面,实际查看后可以发现,页面内嵌的script标签中已经包含了完整的房源地理数据,直接解析即可获取经纬度。

内容的提问来源于stack exchange,提问作者DANIEL HERNANDEZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 21:50:38