【问题标题】:Get JavaScript GoogleMaps coordinates with web-scraping通过网络抓取获取 JavaScript GoogleMaps 坐标
【发布时间】:2011-12-28 09:16:47
【问题描述】:

我想获取可以从这部分网页代码中获取的每个房地产的坐标(webpage):

<script type='text/javascript'>
    //<![CDATA[

  var GMap_1 = null;
  //  Call this function when the page has been loaded
  function GMap_initialize_1()
  {
    var mapOptions = {
      scrollwheel: 0,
      center: new google.maps.LatLng(52.3824, 16.8798),
      zoom: 17,
      mapTypeId: google.maps.MapTypeId.ROADMAP,
      mapTypeControl: true,
      mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU}
    };
    GMap_1 = new google.maps.Map(document.getElementById("GMap_map_1"), mapOptions);
    iconPrecision = new google.maps.MarkerImage("/images/precisionIcon2.png"); iconPrecision.iconSize = new google.maps.Size(12,20);iconPrecision.iconAnchor = new google.maps.Point(6,20);iconPrecision.infoWindowAnchor = new google.maps.Point(6,3);iconPrecision.shadow = "";iconPrecision.shadowSize = new google.maps.Size(22,20);
    marker = new google.maps.Marker({
      icon: iconPrecision,
      position: new google.maps.LatLng(52.3824, 16.8798),
      map: GMap_1
    });


  }
GMap_initialize_1();
    //]]>
  </script>

我的代码如下所示:

url<-"http://www.oferty.net/mieszkanie-na-sprzedaz-os-jana-iii-sobieskiego-poznan-inne,918281305"
doc<-htmlParse(url)
wsp<-xpathApply(doc,"//script[@type='text/javascript']", xmlValue)
geocode<-strsplit(wsp,"google.maps.LatLng\\(")[[1]][3]
geocode<-strsplit(geocode,"\\)")[[1]][1]
Lat<-as.numeric(strsplit(geocode,", ")[[1]][1])
Lng<-as.numeric(strsplit(geocode,", ")[[1]][2])

您认为有更好的方法吗?我没有找到任何使用包 XML 或 Rcurl 抓取 html 代码的 javascript 部分的示例。

【问题讨论】:

    标签: r web-scraping


    【解决方案1】:

    你可以使用正则表达式来抓取坐标。

    url<-"http://www.oferty.net/mieszkanie-na-sprzedaz-os-jana-iii-sobieskiego-poznan-inne,918281305" 
    page <- getURL(url)
    pos <- regexpr("LatLng\\((\\d{2}\\.\\d{4}), (\\d{2}\\.\\d{4})\\)", page, perl=TRUE)
    LatLng <- unlist(lapply(attr(pos,"capture.start"),
                     function(x,y) as.numeric(substr(y,x,x+6)),y=page))
    

    【讨论】:

    • 很棒的功能,我需要更加熟悉这个和其他文本功能。谢谢!
    • 有没有办法将数字更改为,比如说 ?因为坐标的写法有很多种..
    • 您可以更改位数,\\d{1,} - 一位或多位,\\d{2,6} - 在 2 和 6 之间(包括 2 和 6)。
    猜你喜欢
    • 1970-01-01
    • 2021-05-23
    • 2021-01-17
    • 2018-03-08
    • 2023-03-17
    • 2019-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多