5

現在、rvest を使用している URL のリストから緯度/経度のデータを取得しようとしています。各 URL には、特定の場所を示す Google マップが埋め込まれていますが、URL 自体には、API がたどっているパスは表示されません。

ページのソースを見ると、私が求めている部分は次のとおりです。

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false">
</script>
<script type="text/javascript">
function initialize() {
var myLatlng = new google.maps.LatLng(43.805170,-70.722084);
var myOptions = {
  zoom: 16,
  center: myLatlng,
  mapTypeId: google.maps.MapTypeId.SATELLITE
}
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

var marker = new google.maps.Marker({
    position: myLatlng, 
    map: map,
    title:"F.E. Wood & Sons - Natural Energy"
});   

ここで、LatLng(....) 入力を含む行を取得できれば、いくつかの文字列解析操作を使用して、すべての URL の緯度と経度の値を取得できます。

データを取得するために次のコードを作成しました。

require(rvest)
require(magrittr)
fetchLatLong<-function(url){
  url<-as.character(url)
  solNum<-html(url)%>%
    html_nodes("#map_canvas")%>%
    html_attr("script")
}

(「map_canvas」セレクターは、selectorGadget を使用して検出されました。ソース全体は、こちらで参照できます)。

私が求めているものを読むためにこれを手に入れるのは最悪の時間です。多くのノードとノードの組み合わせを試しましたが、役に立ちませんでした。私は phantom.js をいじってみましたが、問題はそれが js でレンダリングされた html コンテンツではないことです。私の素人目にはそう見える)。

誰かアドバイスはありますか?

4

1 に答える 1