首页 > 解决方案 > 正则表达式匹配来自 HTML 脚本的谷歌地图坐标

问题描述

我试图从嵌入谷歌地图的网站上抓取谷歌地图坐标(纬度,lng) document.querySelector("script")给我一个像这样的字符串中的javascript代码

    "
    var myCenter=new google.maps.LatLng(24.1759478919796,-32.45587603383785);

            function initialize()
            { 
            var mapProp = {  
                    center:myCenter,  
                    zoom:15, 
                    mapTypeId:google.maps.MapTypeId.ROADMAP  
                };

                var map = new google.maps.Map(document.getElementById("googleMap"),mapProp);            
                var marker=new google.maps.Marker({  position:myCenter,  });            
                marker.setMap(map);
            }

            google.maps.event.addDomListener(window, 'load', initialize);
            "

我想要一个正则表达式匹配:24.1759478919796,-32.45587603383785

标签: javascriptregexpuppeteer

解决方案


因为这两个数字是唯一以逗号或右括号结尾的数字:

let [lat, lng] = document.querySelector("script:not([src])").textContent
                         .match(/[.\d-]+(?=[,)])/g).map(Number);

console.log(lat, lng);
<script>
var google = { maps: { LatLng: String } };
var myCenter=new google.maps.LatLng(24.1759478919796,-32.45587603383785);
</script>


推荐阅读